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博客

相关推荐
rain bye bye15 小时前
vim 中设置高亮
linux·编辑器·vim
Chat_zhanggong34515 小时前
HI3516CV610-20S开发板
人工智能·嵌入式硬件·编辑器
刀法孜然15 小时前
vim 编辑中,临时挂起编辑器进程,返回到终端命令行
linux·编辑器·vim
LHX sir16 小时前
什么是UIOTOS?
前端·前端框架·编辑器·团队开发·个人开发·web
马儿能够一直跑16 小时前
基于vscode在WSL中配置PlatformIO开发环境
ide·vscode·编辑器
EQ-雪梨蛋花汤17 小时前
【Unity笔记】Unity Lighting Settings 全解析:一文读懂烘焙光照的每个参数(VR项目Lighting优化)
笔记·unity·vr
Dontla17 小时前
VSCode括号高亮插件(vscode插件)bracket pair、活动括号对、括号线(未完全检查)
ide·vscode·编辑器
东方佑18 小时前
智能 DAG 编辑器:从基础功能到创新应用的全方位探索
编辑器
BrightMZM1 天前
记录一下Unity的BUG,Trial Version
unity·bug·打包·trial
数字冰雹2 天前
图观 模型编辑器
编辑器