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

相关推荐
CAE虚拟与现实4 分钟前
VSCode官方汉化包
ide·vscode·编辑器·vscode汉化
CAE虚拟与现实33 分钟前
VSCode创建Python项目和运行py文件
ide·vscode·编辑器
程序猿多布3 小时前
XLua教程之热补丁技术
unity·c#·lua·xlua
SmalBox6 小时前
【光照】Unity中的[光照模型]概念辨析
unity·渲染
挂科是不可能出现的7 小时前
unity导入blender动画
unity·游戏引擎·blender
派葛穆8 小时前
Unity-按钮实现场景跳转
java·unity·游戏引擎
程序猿多布10 小时前
XLua教程之Lua调用C#
unity·c#·lua·xlua
患得患失94911 小时前
【前端】【高德地图WebJs】【知识体系搭建】面要素知识点——>多边形,圆形, 矩形,图形编辑器
前端·编辑器·高德地图·amap
网硕互联的小客服17 小时前
如何解决Ubuntu下vi编辑器方向键变字母的问题?
编辑器
lrh302521 小时前
Custom SRP - Point and Spot Lights
unity·srp·render pipeline