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

相关推荐
VidDown5 小时前
Webhook 调试器:让第三方回调“原形毕露”
java·开发语言·javascript·编辑器·postman
nnsix5 小时前
Unity 贴图压缩格式 笔记
笔记·unity·贴图
VidDown13 小时前
VidDown 使用介绍:一个免费、本地化的在线工具集
javascript·编辑器·音视频·视频编解码·视频
lipengxs13 小时前
PlantUML、Mermaid、SQL ER、OpenAPI 在线预览工具整理
ai·编辑器·流程图·uml
ysn1111114 小时前
搭建状态同步框架的实践心得
unity·架构
之歆16 小时前
Day06_Node.js 核心技术深度解析
node.js·编辑器·vim
2301_7890156216 小时前
Linux基础开发工具一:软件包管理器、vim编辑器
linux·服务器·c语言·汇编·c++·编辑器·vim
weixin_4419400117 小时前
【Unity教程】使用vuforia创建简单的AR实例
unity·游戏引擎·ar
郝学胜-神的一滴17 小时前
[简化版 GAMES 101] 计算机图形学 12:可见性与 Z‑Buffer 深度缓存
unity·godot·图形渲染·three.js·opengl·unreal
Codiggerworld1 天前
Vim 实战:在 VS Code、JetBrains、终端里玩转 Vim
编辑器·vim·excel