当前位置:   article > 正文

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

unity 显示变量到编辑器
  1. public class Test : MonoBehaviour
  2. {
  3. [HideInInspector]
  4. [Header("数量")]
  5. [SerializeField]
  6. public int num;
  7. [Header("分布类型")]
  8. [SerializeField]
  9. public DistributionType distType;
  10. [HideInInspector]
  11. [Header("位置")]
  12. [SerializeField]
  13. public List<Vector3> positions;
  14. [Header("test")]
  15. [SerializeField]
  16. List<testType> test;
  17. }
  18. [Serializable]
  19. public class testType
  20. {
  21. public int id;
  22. public string name;
  23. }
  24. public enum DistributionType
  25. {
  26. None,
  27. test1,
  28. test2,
  29. test3,
  30. }
  1. [CustomEditor(typeof(Test))]
  2. public class TestEditor : Editor {
  3. public SerializedObject obj;
  4. public SerializedProperty distType;
  5. public SerializedProperty positions;
  6. public SerializedProperty num;
  7. public SerializedProperty test;
  8. void OnEnable()
  9. {
  10. obj = new SerializedObject(target);
  11. distType = obj.FindProperty("distType");
  12. num = obj.FindProperty("num");
  13. positions = obj.FindProperty("positions");
  14. test = obj.FindProperty("test");
  15. }
  16. public override void OnInspectorGUI()
  17. {
  18. //base.OnInspectorGUI();
  19. obj.Update();
  20. if (distType.enumValueIndex == 0)
  21. {
  22. EditorGUILayout.PropertyField(positions, true);
  23. }
  24. else
  25. {
  26. EditorGUILayout.PropertyField(num);
  27. }
  28. EditorGUILayout.PropertyField(test,true);
  29. obj.ApplyModifiedProperties();
  30. }
  31. }

 

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

参考链接:

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/684644
推荐阅读
相关标签
  

闽ICP备14008679号