unity3d游戏开发之Unity自定义编辑器界面.doc
上传人:qw****27 上传时间:2024-09-11 格式:DOC 页数:3 大小:61KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

unity3d游戏开发之Unity自定义编辑器界面.doc

unity3d游戏开发之Unity自定义编辑器界面.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

好吧,我承认自己是个强迫症患者,在做项目的时候发现脚本的Inspector面板上暴露的密密麻麻的变量头皮一阵发麻~~~举个例子比如我要写一个Enemy的类,我希望这个Enemy里面包括了所有的敌人类型,比如飞机坦克等等。但是由于类型不同,他们的一直变量类型也不同,比如坦克的变量类型可能有移动速度,子弹类型,或者其他的,飞机的变量类型有飞行速度,等等。如果不加整理那么在Inspector面板就会暴露出密密麻麻的变量不仅头晕,而且不利于调试。其实就是我强迫症发作了,我只想面板显示我想要的东西。好吧下面开始首先我新建一个test1脚本C#这篇文章来自HYPERLINK"http://www.gopedu.com/"狗刨学习网我们的目标是通过枚举类型来定义当前物体的类型。如果m_type是player,那么就显示playerlife;如果是enemy就显示enemylife。下面我们需要写一个脚本去重写Inspector界面。新建一个文件夹命名为Editor因为我们需要usingunityEditor而是用这个的脚本必须在名字为Editor的文件下。在Editor文件下创建一个C#新脚本名字随意我的叫Inspector_test1首先头部加入usingUnityEditor[CunstomEditor(typeof(test1))]继承改为Editor首先我们要序列化一个物体就是说脚本会附在一个Object上还有脚本的变量在OnEnable()里面初始化Objcet对象抓取脚本里面的属性然后再重写OnInspectorGUI()首先是更新脚本的信息test.Update();然后显示枚举类型变量m_type这个变量是一定要暴露出来的因为通过它来定义这个物体的属性是player还是enemyEditorGUILayout.propertyField(m_type);然后我们来判断这个m_type是哪个值是player还是enemy.我们通过SerializedProperty.enumValueIndex枚举值索引来检索当前枚举类型的变量值是哪个例如在type枚举类型里面player的枚举值索引下标为0enemy的枚举值索引下标为1这样我们通过判断m_type的枚举下标的值就可以推断出当前值的哪一个,进而进行相关的操作了。最后,通过SerializedObject.ApplyModifiedProperties应用修改的属性效果