栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

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

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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();
     }
}

简单看一下效果吧

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901282.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号