欢迎来到天天文库
浏览记录
ID:8973891
大小:61.00 KB
页数:3页
时间:2018-04-13
《unity3d游戏开发之unity自定义编辑器界面》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、好吧,我承认自己是个强迫症患者,在做项目的时候发现脚本的Inspector面板上暴露的密密麻麻的变量头皮一阵发麻~~~举个例子比如我要写一个Enemy的类,我希望这个Enemy里面包括了所有的敌人类型,比如飞机坦克等等。但是由于类型不同,他们的一直变量类型也不同,比如坦克的变量类型可能有移动速度,子弹类型,或者其他的,飞机的变量类型有飞行速度,等等。如果不加整理那么在Inspector面板就会暴露出密密麻麻的变量不仅头晕,而且不利于调试。其实就是我强迫症发作了,我只想面板显示我想要的东西。好吧下面开始首先我新建一个test1脚本C#这篇文章来自狗刨学习
2、网我们的目标是通过枚举类型来定义当前物体的类型。如果m_type是player,那么就显示playerlife;如果是enemy就显示enemylife。下面我们需要写一个脚本去重写Inspector界面。新建一个文件夹命名为Editor因为我们需要 usingunityEditor而是用这个的脚本必须在名字为Editor的文件下。在Editor文件下创建一个C#新脚本名字随意我的叫Inspector_test1 首先头部加入usingUnityEditor [CunstomEditor(typeof(test1))]继承改为Editor 首先我们要
3、序列化一个物体就是说脚本会附在一个Object上 还有脚本的变量 在OnEnable()里面初始化Objcet对象抓取脚本里面的属性然后再重写OnInspectorGUI() 首先是更新脚本的信息test.Update();然后显示枚举类型变量m_type这个变量是一定要暴露出来的因为通过它来定义这个物体的属性是player还是enemy EditorGUILayout.propertyField(m_type);然后我们来判断这个m_type是哪个值是player还是enemy. 我们通过 SerializedProperty.enumValu
4、eIndex枚举值索引来检索当前枚举类型的变量值是哪个 例如在type枚举类型里面player的枚举值索引下标为0enemy 的枚举值索引下标为1这样我们通过判断m_type的枚举下标的值就可以推断出当前值的哪一个,进而进行相关的操作了。最后,通过SerializedObject.ApplyModifiedProperties应用修改的属性效果
此文档下载收益归作者所有