UNITY3D, UNITY3D游戏开发, UNITY3D游戏定制, UNITY3D游戏外包,UNI

原创
2015/03/20 17:19
阅读数 518
unity3d-unityeditor编辑器定制和开发插件

如何让编辑器运行你的代码

Unity3D可以通过事件触发来执行你的编辑器代码,但是我们需要一些编译器参数来告知编译器何时需要触发该段代码。
[MenuItem(XXX)] 声明在一个函数上方,告知编译器给Unity3D编辑器添加一个菜单项,并且当点击该菜单项的时候调用该函数。触发函数里 可以编写任何合法的代码,可以是一个资源批处理程序,也可以弹出一个编辑器窗口。代码里可以访问到当前选中的内容(通过Selection类),并据此来 确定显示视图。与此类似,[ContextMenu("XXX")]可以向你的上下文菜单中添加一个菜单项。

当你编写了一些Component脚本,当它被附属到某个GameObject时,想在编辑视图即可在Scene视图观察到效果,那么你可以把 [ExecuteInEditMode]写在类上方来通知编译器,该类的OnGUI和Update等函数在编辑模式也也会被调用。我们还可以使用 [AddComponentMenu("XXX/XXX")]来把该脚本关联到Component菜单中,点击相应菜单项即可为GameObject添加 该Component脚本。

开始编写编辑器
为了避免不必要的包含,Unity3D的运行时和编辑器类分辨存储在不同的Assemblies里(UnityEngine和UnityEditor)。当你准备开始编写编辑器之前,你需要using UnityEditor来导入编辑器的名称空间。
有些代码可能是运行时和编辑器都需要执行的,如果你想在其中加以区分,那么可以使用#if UNITY_EDITOR … #endif宏来对编辑器代码做特殊处理。

在你开始真正编写代码之前,我认为你还需要知道所有放在命名为Editor目录下的脚本会在其它脚本之后进行编译,这方便了你去使用那些运行时的内容。而那些目录下的脚本是不能访问到Editor目录下的内容的。所以,你最好把你的编辑器脚本写在Editor目录下。

如何创建自定义编辑器窗口
创建你的窗口

如果你想自定义一个可编辑的面板,那么你需要编写一个继承自EditorWIndow的类。通常情况下,你还需要写一个[MenuItem]来告知编译器何时打开这个面板。这个事件的回调应该是一个静态方法,并且返回一个窗口的实例。
现在,当你点击对应的菜单项时,会弹出一个空白的窗口。并且你可以像Unity3D编辑器预制的窗口一样随意拖动和停靠。下面来看看我们如何来在窗口内实现我们想要的功能吧。

扩展你的窗口
和运行时的GUI一样,如果你需要在窗口中添加交互控件,那么必须重写OnGUI方法。具 体的重写方式和运行时的GUI一样,你甚至可以使用任何扩展自原 生GUI系统的插件(例如iGUI和GUIX)来简化你的插件开发流程(仅经过初步测试,更深层次的可用性尚待验证)。同时UnityEditor名称空 间下的EditorGUILayout在原生GUI之上提供了一些更方便的接口和控件,让你可以轻松的使用一些编辑器特有的UI控件。

除了OnGUI外,你可能还会需要如下一些回调来触发某些具体的逻辑(完整的列表请参考官方文档):
l OnSelectionChange,但你点选物品时触发
l OnFocus /OnLostFocus,获得和失去焦点时触发

 

上海诸君信息科技有限公司致力于一流的创新软件产品设计定制,服务客户遍及全球, 公司有多款精心设计的软件产品,如诸君工作系统、餐饮一体化管理系统、PadOrder电子菜谱、CDM文档管理系统、清洁能源参数优化系统、银行iPad文件管理系统等。

我们提供优秀的综合软件与游戏开发与咨询、管理软件定制开发、点单软件与移动客户端(WP,Android,iOS)软件开发,为全球多家软件公司、国企、医疗、能源机构提供优秀的应用解决方案,欢迎咨询!

我们为海内外客户提供先进的软件解决方案,因况制宜、使用最适合的前沿技术为客户解决问题,拥有强大的团队、熟悉前沿的开发技术。

我司拥有领先的诸君支持系统,使用前所未有的方式高效提供解决方案、敏捷处理客户反馈。

官网:http://uniguyit.com
手机:13611968046(杨经理)
QQ:2208934488
电邮:Service@uniguyit.com


展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部