转载请注明出处:http://blog.csdn.net/u010019717

更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/space-uid-18602.html

这是在“Unity Editor Extension”系列的第 2 次帖子。

post描述了为创建自定义inspectors面板在 Unity 编辑器的基本步骤。在该系列的下一个posts,我将深入探讨更高级的主题,例如inspectors及Unity’s serialization系统。

Inspector检查器基础知识

Inspector是在 Unity 编辑器 — — 单一视图,显示一个游戏物体的所有相关信息,允许轻松地操纵它的最常用的窗口之一。

默认情况下,检查器允许编辑任何可以被序列化的,根据这些规则(请参见这篇文章):

◾Public, or marked with[SerializeField]

◾Not static

◾Not const, readonly

◾Field of a type that canbe serialized

你可能会问自己,字段可以是序列化?:

◾Custom non abstractclasses with [Serializable] attribute.

◾Custom structs with[Serializable] attribute. (new in Unity4.5)

◾Objects that derive fromUntiyEngine.Object

◾Primitive data types(int, float, double, bool, string, etc)

◾Arrays of a type that canbe serialized

◾List<T> of a typethat can be serialized

创建自定义的检查器

Unity允许创建自定义的检查器为您定义的自定义类。这可以出于各种原因,例如:自定义检查器看起来或自动化(做一些字段的值发生更改时)某一特定行为。

若要创建一个新的inspector,首先创建一个新的editor类 (代码文件放置在一个Editor中的文件夹),并从中Editor类派生。此类应该也可饰用CustomEditor属性,以便让引擎知道哪种类型的编辑器用来:

[CustomEditor(typeof(MySettingsClass))]
publicclassMySettingsEditor : Editor
{publicoverridevoidOnInspectorGUI(){// This is where the magic happens.}
}

重写方法OnInspectorGUI是提供 GUI 代码显示检查器的内容。这篇文章并不处理的创作 GUI 元素以及如何风格新inspector  — — 这些主题都计划在将来的文章覆盖。

显示默认检查器

有时你可能想要保持原inspector时仅向其添加次要更改外观。这可以使用DrawDefaultInspector方法。例如,请考虑将“Reset”按钮添加到Transform组件:

[CustomEditor(typeof(Transform))]
publicclassTransformEditor : Editor
{ publicoverridevoidOnInspectorGUI(){if(GUILayout.Button("Reset")){vartransform = target asTransform;transform.position = Vector3.zero;transform.localScale = Vector3.zero;transform.rotation = Quaternion.identity;}// This draws the default inspector for MySettingsClassDrawDefaultInspector();}
}

上面的代码的结果可以看到在下边。你可以看到一个新的“Reset”按钮被添加在Transform’s inspector。

注: 默认inspector是一个通用的实现并不可能是你已经习惯了 !例如,变换组件具有内部实现完全一样 (源于编辑器和装饰用CustomEditor属性) 上文所述的UnityEditor.dll,一个内置的自定义实现。不幸的是,如果你想要重写,而不是默认的督察,要诉诸反射来调用该检查方法。

示例用法 — — 执行自定义代码检查器获取修改时

在此示例中,每当在检查器GUI 变化,自定义代码将执行,并打印被修改的对象到控制台:

usingUnityEngine;[CustomEditor(typeof(MonoBehaviour), true)]
publicclassMonoBehaviourPropertiesEditor : Editor
{publicoverridevoidOnInspectorGUI(){// Draw the default inspector first.DrawDefaultInspector();if(GUI.changed){OnModified();}}privatevoidOnModified(){Debug.Log("Inspector modified: " + target.name);}
}

这是一个相当做作的例子,但这可以真正有价值的用途。在我们的项目,例如,我们有检查器允许您选择用于编辑对象的“mode”。一旦选择模式,则调用方法时(以同样的方式,如上所示),更改该对象的可视状态,使其匹配的新的模式,使所做的更改立即在场景视图中可用。

摘要

我们已经看到如何创建自定义的检查器的自定义类 (inspectors不只用来编辑MonoBehaviours,他们可以编辑任何可序列化的资源如 ScriptableObjects)。

Unity Editor Extensions – Inspectors私人定制相关推荐

  1. 50+ Best Unity Assets: Shader, Editor Extensions, Level Editors, Models, Terrain

    Unity's Asset Store is big. It is hard to find the top solution for each of your problem. I gather a ...

  2. Unity教程之-制作闪亮的星星Star(三):给Star创建Unity Editor编辑器

    继续上篇文章<Unity教程之-制作闪亮的星星Star(二):创建Shader>,本篇我们来讲解 unity star editor的创建! 建立编辑器 Creating the Insp ...

  3. Unity Editor已停止工作

    在更换系统之后,可能会出现打开刚安装好的Unity,显示Unity Editor已停止工作,这时候我们考虑是系统win7的问题.可以在原系统上升级,也可以重新安装,升级.文中所涉及到的软件,可在右侧加 ...

  4. 蓝牙激光雕刻机android,迷你型激光雕刻机!私人定制随你玩

    原标题:迷你型激光雕刻机!私人定制随你玩 激光刻字已经成为了很多品牌商出售自己商品的时候附带的一项免费服务.比如之前大家还嚷嚷着贵啊贵的Apple Pencil,就因为能够刻字这项服务,导致很多人忍不 ...

  5. android 定制输入法,QQ输入法Android 4.3全新升级 实现私人定制输入

    新一版QQ手机输入法来了, 针对Android平台每一个用户深度定制输入法.最新4.3版本除了对核心功能进行优化外,更带来了诸多新增功能:新增键盘大小调节,私人定制; 自定义皮肤可自选字体颜色,深度个 ...

  6. Unity Editor Built-in Icons (Unity version: 2018.3.0f2)

    Unity Editor Built-in Icons Unity version: 2018.3.0f2 Icons what can load using EditorGUIUtility.Ico ...

  7. 揭个人信息黑产链条:含50多种交易大项 可私人定制

    自从"天天"出事之后,许多数据信息买卖的QQ群沉寂下来,一些生意甚至陷入了瘫痪状态. "天天"是圈内有名的"大人物",这个"圈子& ...

  8. 案例分享|智慧广电的“宽带加速”之路,博睿数据来“私人定制”

    几乎所有行业都在向智慧型方向进发,对于广电行业而言,也并不例外. 2020年3月2日,国家广播电视总局召开电视电话会议,贯彻落实中宣部等九部委联合印发的<全国有线电视网络整合发展实施方案> ...

  9. 敏涵控股集团贵族私人定制:时尚最C位 懂精致 更懂生活

    谈及欧式,你最向往的是什么?是优雅,是简约,是塞纳河畔的咖啡,还是法国国宝级的演员苏菲玛索?在欧式的时尚字典里,你就是你自己,你拥有风情,拥有浪漫,拥有专属于自己的时尚. 我们都希望避开拥挤的人流,在 ...

最新文章

  1. A Painless Q-learning Tutorial (一个 Q-learning 算法的简明教程)
  2. Servlet HTTP Status 405 - HTTP method GET is not supported by this URL
  3. 莫比乌斯反演 做题记录
  4. 服务器一般在什么位置,云服务器比较普通服务器差异在哪里
  5. 途牛windows转linux,在 Windows 中通过 VirtualBox 启动物理硬盘上的 Linux 操作系统...
  6. 捡到的苹果手机怎么解id锁_深圳苹果售后维修点告诉你iPhone XR手机面容id不能使用是怎么回事?...
  7. react-navigation使用介绍及UI组件外实现统一跳转
  8. MySQL查询指定数据库中所有记录不为空的表
  9. matlab曲线拟合方法和函数拐点查找
  10. 深蓝词库转换2.2发布,支持手心输入法和Win10微软拼音
  11. C++之责任链(Chain of Responsibility)模式
  12. 隐蔽的大数据杀熟,“百亿补贴”会员竟比非会员贴得少?
  13. centos ffmpeg 加水印
  14. Java设计模式之——策略模式
  15. Android 9.0系统软件进入视频界面发生闪退
  16. 逆向工程实验Lab7
  17. 用Python计算身份证校验码
  18. MySQL 服务无法打开的解决方法
  19. su: warning: cannot change directory to : Permission denied ;-bash: bash_profile: Permission denied
  20. 网络协议分析(3):FTP

热门文章

  1. RNN详解(Recurrent Neural Network)
  2. Spring Security Config : HttpSecurity安全配置器 SessionManagementConfigurer
  3. Python + OpenCV 把书法里的单字提取出来
  4. uniapp局部上拉加载数据
  5. vdbench测试生成器
  6. HDU 4940 Destroy Transportation system(无源汇上下界网络流)
  7. 教你合约开源 bsc合约开源 heco开源
  8. bug 记录 - 安卓移动端高度使用 100vh 的坑
  9. 函数的四种特性——有界性 单调性 奇偶性 周期性
  10. 华为荣耀10有信号的地方无服务器,二修华为荣耀10青春版进水无信号偶尔有2G信号不能打电话...