Unity 编辑器拓展动态下拉列表

约定不等于承诺〃 2023-02-18 03:16 77阅读 0赞

//表现

2020061518302923.gif

//编辑器扩展脚本放到Editor下

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEditor;
  4. using UnityEngine;
  5. [CustomEditor(typeof(objPropPrefab))] //指定要编辑的脚本对象
  6. public class PropInspector : Editor
  7. {
  8. public override void OnInspectorGUI()
  9. {
  10. base.OnInspectorGUI();
  11. objPropPrefab script = target as objPropPrefab;
  12. EditorGUILayout.BeginHorizontal();
  13. script.PropType = (enumProp)EditorGUILayout.
  14. EnumPopup("类别:", script.PropType);
  15. EditorGUILayout.EndHorizontal();
  16. EditorGUILayout.BeginHorizontal();
  17. if (script.PropType == enumProp.Yaoshui)
  18. {
  19. script.YaoshuiType = (enumYaoshui)EditorGUILayout.
  20. EnumPopup("药水:", script.YaoshuiType);
  21. } else if (script.PropType == enumProp.Food) {
  22. script.FoodType = (enumFood)EditorGUILayout.
  23. EnumPopup("消耗品:", script.FoodType);
  24. }
  25. else if (script.PropType == enumProp.Paotai)
  26. {
  27. script.PaotaiType = (enumPaotai)EditorGUILayout.
  28. EnumPopup("炮台:", script.PaotaiType);
  29. }
  30. else if (script.PropType == enumProp.Baoxiang)
  31. {
  32. script.ChackType = (enumChack)EditorGUILayout.
  33. EnumPopup("宝箱:", script.ChackType);
  34. }
  35. EditorGUILayout.EndHorizontal();
  36. }
  37. }

20200615183148767.png

  1. 示例中用到的枚举
  2. /**buff药水道具枚举*/
  3. public enum enumYaoshui
  4. {
  5. addHp = 1, //加血药水、
  6. maxHp, //增加血量上限药水永久
  7. addLuck //爆率药水有时效
  8. }
  9. /**消耗类物品枚举*/
  10. public enum enumFood
  11. {
  12. money = 1, ///消耗类物品 钱 食物 心情 燃料
  13. food,
  14. fuel,
  15. happy,
  16. wood,
  17. stone,
  18. magic
  19. }
  20. /**宝箱枚举*/
  21. public enum enumChack
  22. {
  23. Chack0 = 1, //宝箱
  24. Chack1,
  25. Chack2
  26. }
  27. /**炮台枚举*/
  28. public enum enumPaotai
  29. {
  30. Paotai0 = 1,
  31. Paotai1,
  32. Paotai2,
  33. Paotai3
  34. }

Unity编辑器扩展: GUILayout、EditorGUILayout 控件整理 https://blog.csdn.net/linxinfa/article/details/87863123

//objPropPrefab 脚本 挂到场景的物体上就可以

  1. using System.Collections;
  2. using UnityEngine.UI;
  3. using System.Collections.Generic;
  4. /**道具预制体*/
  5. public class objPropPrefab : MonoBehaviour
  6. {
  7. public int vid;//作为物品的唯一标识
  8. private GlobalDate.BagDate date;//物品的信息
  9. [HideInInspector]
  10. public enumProp PropType;//物品类别 大类
  11. [HideInInspector]
  12. public enumYaoshui YaoshuiType;//物品类别
  13. [HideInInspector]
  14. public enumChack ChackType;//物品类别
  15. [HideInInspector]
  16. public enumPaotai PaotaiType;//物品类别
  17. [HideInInspector]
  18. public enumFood FoodType;//物品类别
  19. void Start()
  20. {
  21. }

发表评论

表情:
评论列表 (有 0 条评论,77人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Ajax动态列表

     许多页面上都涉及有下拉框,即select标签。对于简单的下拉框,被选择的数据是不需要改变的,我们可以用写死。这样下拉框的数据永远都是那几条。   示例: 1 <s