编辑器拓展动态下拉列表
原文:https://blog.csdn.net/m0_37583098/article/details/106768772
public enum UIType
{
Toggle,
Button,
Slider,
}
public enum toggleFunction
{
bool_Save_LastInputType,
bool_walkOrRun,
bool_AudioSource,
}
public enum btnFunction
{
btn1,
btn2,
btn3,
}
public enum sliderFunction
{
slider1,
slider2,
slider3,
}
using UnityEditor;
using UnityEngine.UI;
[CustomEditor(typeof(UIData))] //指定要编辑的脚本对象
public class UIEnumInspector : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
UIData uidata = target as UIData;
EditorGUILayout.BeginHorizontal();
uidata.uitype = (EnumManager.UIType)EditorGUILayout.EnumPopup("UI类别:", uidata.uitype);
//uidata.uitype = GetUiType(uidata);
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
if (uidata.uitype == EnumManager.UIType.Toggle)
{
uidata.toggleFunction = (EnumManager.toggleFunction)EditorGUILayout.
EnumPopup("toggle功能:", uidata.toggleFunction);
}
else if (uidata.uitype == EnumManager.UIType.Button)
{
uidata.btnFunction = (EnumManager.btnFunction)EditorGUILayout.
EnumPopup("btn功能:", uidata.btnFunction);
}
else if (uidata.uitype == EnumManager.UIType.Slider)
{
uidata.sliderFunction = (EnumManager.sliderFunction)EditorGUILayout.
EnumPopup("btn功能:", uidata.sliderFunction);
}
EditorGUILayout.EndHorizontal();
EnumManager.UIType GetUiType(UIData uidata)//获取当前ui类型
{
if (uidata.GetComponent<Toggle>() != null)
{
return EnumManager.UIType.Toggle;
}
else if(uidata.GetComponent<Button>() != null)
{
return EnumManager.UIType.Button;
}
else if (uidata.GetComponent<Slider>() != null)
{
return EnumManager.UIType.Slider;
}
else
{
return EnumManager.UIType.Toggle;
}
}
}
}
public class UIData : MonoBehaviour
{
[HideInInspector]
public EnumManager.UIType uitype;
[HideInInspector]
public EnumManager.toggleFunction toggleFunction; //toggle功能
[HideInInspector]
public EnumManager.btnFunction btnFunction; //toggle功能
[HideInInspector]
public EnumManager.sliderFunction sliderFunction; //toggle功能
}