Unity 自定义编辑器根据枚举值显示变量

cs 复制代码
public class Test : MonoBehaviour
{
    [HideInInspector]
    [Header("数量")]
    [SerializeField]
    public int num;

    [Header("分布类型")]
    [SerializeField]
    public DistributionType distType;

    [HideInInspector]
    [Header("位置")]
    [SerializeField]
    public List<Vector3> positions;
}


public enum DistributionType
{
    None,
    test1,
    test2,
    test3,
}
cs 复制代码
[CustomEditor(typeof(Test))]
public class TestEditor : Editor {

    public SerializedObject obj;

    public SerializedProperty distType;
    public SerializedProperty positions;
    public SerializedProperty num;

    void OnEnable()
    {
        obj = new SerializedObject(target);
        distType = obj.FindProperty("distType");
        num = obj.FindProperty("num");
        positions = obj.FindProperty("positions");
    }

    public override void OnInspectorGUI()
    {
        //base.OnInspectorGUI();
        obj.Update();
        if (distType.enumValueIndex == 0)
        {
            EditorGUILayout.PropertyField(positions, true);
        }
        else
        {
            EditorGUILayout.PropertyField(num);
        }
        obj.ApplyModifiedProperties();

    }
}

在数据类中(文中是Test类)数组类的字段在开启基类的base.OnInspectorGUI();不能用[HideInInspector],否则会无法显示数组内容。

参考链接:

Unity 自定义inspector界面如何显示数组_360问答 (so.com)

Unity根据条件控制Inspector面板中的属性显示_unity inspect 条件控制-CSDN博客

相关推荐
CreasyChan1 小时前
Unity中C#状态模式详解
unity·c#·状态模式
鹿野素材屋1 小时前
动作游戏网游:帧同步下的动画同步
unity·游戏引擎
BF06241 小时前
EPICS ARCHIVER APPLIANCE
编辑器·epics
世洋Blog1 小时前
数据驱动与MVC
unity·mvc
黑科技编辑器1 小时前
SVG编辑器如何生成浪漫全屏下雪特效图文?
编辑器·新媒体运营·交互·微信公众平台
WMX10121 小时前
Unity添加近身菜单-MRTK
unity·游戏引擎
Jeking2172 小时前
初探新一代workflow编辑器unione flow editor:企业级流程设计的高效解决方案
编辑器·流程图·workflow·工作流·flow editor·unione cloud
我命由我1234514 小时前
VSCode - Prettier 配置格式化的单行长度
开发语言·前端·ide·vscode·前端框架·编辑器·学习方法
在路上看风景16 小时前
15. 纹理尺寸是4的倍数
unity
AT~19 小时前
unity 使用Socket和protobuf实现网络连接
unity·游戏引擎