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