Editor Style Viewer

在开发过程中,我喜欢编写一些辅助的Editor插件,方便在游戏开发过程进行调试。

下面是摘自Asset Store的一个查看Unity 默认GUI样式的小工具

插件链接:Editor Style Viewer https://www.assetstore.unity3d.com/en/#!/content/3282

预览

Editor Style Viewer源码

原理:遍历所有的GUI.skin,并显示其样式

using UnityEngine;
using UnityEditor; /// <summary>
/// 查看默认的gui skin样式
/// </summary>
public class EditorStyleView : EditorWindow
{
private Vector2 scrollPosition = Vector2.zero;
private string search = string.Empty; [MenuItem("Tools/默认GUI样式查看器")]
static void Init()
{
var window= EditorWindow.GetWindow<EditorStyleView>();
window.title = "GUI样式查看器";
window.Show(); } void OnGUI()
{
GUILayout.BeginHorizontal("HelpBox");
GUILayout.Label("单击左侧样式将复制其名到剪贴板", "label");
GUILayout.FlexibleSpace();
GUILayout.Label("查找:");
search = EditorGUILayout.TextField(search);
GUILayout.EndHorizontal(); scrollPosition = GUILayout.BeginScrollView(scrollPosition); //foreach (GUIStyle style in GUI.skin.customStyles)
foreach (GUIStyle style in GUI.skin)
{
//过滤
if (style.name.ToLower().Contains(search.ToLower()))
{
//设置奇偶行不同背景
GUILayout.BeginHorizontal("PopupCurveSwatchBackground");
GUILayout.Space();//左边留白20
if (GUILayout.Button(style.name, style))
{
//把名字存储在剪粘板
EditorGUIUtility.systemCopyBuffer = style.name; // "\"" + style.name + "\"";
}
GUILayout.FlexibleSpace();
EditorGUILayout.SelectableLabel("\"" + style.name + "\"");
GUILayout.EndHorizontal();
GUILayout.Space();//右边留白20
}
} GUILayout.EndScrollView();
}
}

GM编辑器插件

比如这样的GM小工具,辅助开发团队。

1、创建GMEditorWindow.cs,放在Editor目录下

2、编写与游戏相关的逻辑功能

GM编辑器插件源码

[MenuItem("Game/GM指令")]
static void Init()
{
var window = EditorWindow.GetWindow<GMEditorWindow>();
window.title = "XX GM指令";
window.Show();
} private int newExp = , newMoney = , newVip = , newVp = , newCoin = , newSpirts = ;
private int maxHp = , maxVp = ,maxHurt=; private int nMapId = ; public void OnGUI()
{
EditorGUILayout.LabelField("== 加数值 指令 =="); GUILayout.BeginHorizontal();
GUILayout.Label("经验:");
newExp = EditorGUILayout.IntField(newExp, GUILayout.ExpandWidth(true), GUILayout.MinHeight());
if (GUILayout.Button("加经验", GUILayout.MinWidth(), GUILayout.MaxHeight()))
{
AddExp(newExp);
}
//-------
GUILayout.Label("VIP钱:");
newVip = EditorGUILayout.IntField(newVip, GUILayout.ExpandWidth(true), GUILayout.MinHeight());
if (GUILayout.Button("加VIP", GUILayout.MinWidth(), GUILayout.MaxHeight()))
{
AddVip(newVip);
}
GUILayout.EndHorizontal(); GUILayout.BeginHorizontal();
GUILayout.Label("金币:");
newCoin = EditorGUILayout.IntField(newCoin);
if (GUILayout.Button("加金币", GUILayout.MinWidth(), GUILayout.MaxHeight()))
{
AddCoin(newCoin);
}
//-------
GUILayout.Label("元宝");
newMoney = EditorGUILayout.IntField(newMoney);
if (GUILayout.Button("加元宝", GUILayout.MinWidth(), GUILayout.MaxHeight()))
{
AddMoney(newMoney);
}
GUILayout.EndHorizontal();
//后面继续....
}

编写 Unity Editor 插件的更多相关文章

  1. 开发unity DLL插件

    最近开发一款设备的SDK,想着要开发unity版本,怎么做呢?首先想到的就是在外部编写相关的驱动程序然后集成成几个dll作为unity的SDK使用了.So,我就开始了unity外部插件的研究之旅了. ...

  2. 自己编写Android Studio插件 别停留在用的程度了(转载)

    转自:自己编写Android Studio插件 别停留在用的程度了 1概述 相信大家在使用Android Studio的时候,或多或少的会使用一些插件,适当的配合插件可以帮助我们提升一定的开发效率,更 ...

  3. 用jquery编写的分页插件

    用jquery编写的分页插件 源码 function _pager_go(total_page) { var page_str = $("#_pager_textbox").val ...

  4. 用jquery编写的tab插件

    用jquery编写的tab插件 源码 $.fn.ss_tab = function (options) { var box = $(this); var btns = $(this).find(&qu ...

  5. 如何自己编写一个easyui插件续

    接着如何自己编写一个easyui插件继续分享一下如何从上一节写的“hello”插件继承出一个“hello2”. 参考了combobox的源码中继承combo,当然我这个简单很多了.都是根据自己的理解来 ...

  6. 用Javascript编写Chrome浏览器插件

    原文:http://homepage.yesky.com/62/11206062.shtml 用Javascript编写Chrome浏览器插件 2010-04-12 07:30 来源:天极网软件频道 ...

  7. 在Eclipse中使用Propertites Editor插件来解决property文件中文显示乱码

    在一般情况下,propertites文件在eclipse中的显示中文一直显示乱码,想要解决这个问题,需要通过在eclipse中安装一个Propertites Editor插件来进行解决. 在Eclip ...

  8. 如何编写一个gulp插件

    很久以前,我们在"细说gulp"随笔中,以压缩JavaScript为例,详细地讲解了如何利用gulp来完成前端自动化. 再来短暂回顾下,当时除了借助gulp之外,我们还利用了第三方 ...

  9. 使用canvas编写时间轴插件

    使用canvas编写时间轴插件 背景 项目中有一个视频广场的功能,需要一个时间轴类似视频播放中进度条功能一样显示录像情况,并且可以点击.拖动.放大缩小展示时间轴,获取到时间轴的某个时间.原来的时间轴是 ...

随机推荐

  1. Sass学习之路(5)——变量

    1.定义变量:Sass中定义变量的关键字是'$'(毕竟程序员缺钱),并使用冒号(:)进行赋值,例如: $width:200px;//定义了一个名为width的变量,值为200px 2.普通变量和默认变 ...

  2. SharePoint 2013 Silverlight中使用Net客户端对象模型

    1.创建Silverlight时,选择Silverlight 4,不要选择版本5,试了很久版本5都调用不了,自己也不知道什么原因,谷歌也没找到答案,后来尝试版本4,可以调用: 至于Host the S ...

  3. CSS 选择器 关系

    常见的基于关系的选择器 选择器        选择的元素 A E    元素A的任一后代元素E (后代节点指A的子节点,子节点的子节点,以此类推) A > E   元素A的任一子元素E(也就是直 ...

  4. java url方法解释

    java 的url类中有很多get方法 以下是获取值的意义 // 首先先看一下wikipedia上关于url的一个描述 //Every HTTP URL conforms to the syntax ...

  5. 【代码笔记】iOS-标题2个图标,点击的时候,页面跳转

    一,效果图. 二,工程图. 三,代码 RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  6. GCD同步异步 串行并行大解析

    /** 核心概念 任务:block里需要执行的操作 队列:把任务添加进入队列中,按照先进先出的原则来执行任务  串行队列:一个一个的执行 并行队列:可以让多个任务并发(同时)执行(自动开启多个线程同时 ...

  7. 利用Scala语言开发Spark应用程序

    Spark内核是由Scala语言开发的,因此使用Scala语言开发Spark应用程序是自然而然的事情.如果你对Scala语言还不太熟悉,可 以阅读网络教程A Scala Tutorial for Ja ...

  8. 自动kill慢查询

    在生产环境中,DB服务器经常会被并发的慢查询压挂,因此事前进行sql审核避免烂SQL很重要.万一不小心慢sql还是跑到线上,并且并发还不小,这是dba肯定会收到告警.dba上线处理第一时间是定位并ki ...

  9. 十五天精通WCF——第三天 client如何知道server提供的功能清单

     通常我们去大保健的时候,都会找姑娘问一下这里能提供什么服务,什么价格,这时候可能姑娘会跟你口述一些服务或者提供一份服务清单,这样的话大 家就可以做到童嫂无欺,这样一份活生生的例子,在wcf中同样是一 ...

  10. Druid 数据库连接池监控配置(web项目)

    Spring数据源配置: <!-- 数据源 --> <!--<bean id="dataSource" class="org.apache.com ...