100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Unity编辑器扩展 自定义脚本属性面板--基础篇

Unity编辑器扩展 自定义脚本属性面板--基础篇

时间:2020-07-18 15:47:30

相关推荐

Unity编辑器扩展 自定义脚本属性面板--基础篇

开发中,如果使用插件会发现插件的组件,在属性面板上的设计非常方便,看着很高大上,他们是怎么做到的呢

基础

在Editor文件夹下,创建我们的属性面板编辑脚本using UnityEditor的命名空间继承Editor

测试脚本

using UnityEngine;public class ComponentInspector:MonoBehaviour {public bool PropertyBool;public TestEnum PropertyEnum;public int PropertyValue;}public enum TestEnum {Test1 = 0,Test2 = 1}

Editor脚本

using UnityEngine;using UnityEditor;//ComponentInspector:目标脚本[CustomEditor(typeof(ComponentInspector))]public class ComponentInspectorEditor : Editor{private SerializedObject @object;private SerializedProperty m_PropertyBool;private SerializedProperty m_PropertyEnum;private SerializedProperty m_PropertyValue;private void OnEnable(){@object = new SerializedObject(target);//寻找对应的属性m_PropertyBool = @object.FindProperty("PropertyBool");m_PropertyEnum= @object.FindProperty("PropertyEnum");m_PropertyValue= @object.FindProperty("PropertyValue");}public override void OnInspectorGUI(){@object.Update();SerializedProperty property = @object.GetIterator();while (property.NextVisible(true)){using (new EditorGUI.DisabledScope("m_Script" == property.propertyPath)){EditorGUILayout.PropertyField(property, true);break;}}//开始设计属性面板EditorGUILayout.PropertyField(m_PropertyBool);if(m_PropertyBool .boolValue){EditorGUILayout.PropertyField(m_PropertyEnum);if(m_PropertyEnum.enumValueIndex == 0){EditorGUILayout.PropertyField(m_PropertyValue);}}@object.ApplyModifiedProperties();}}

简单看一下效果吧

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。