编辑器拓展动态下拉列表

编辑器拓展动态下拉列表
原文: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功能

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity编辑器拓展(Editor Extension)可以通过自定义的脚本来扩展Unity编辑器的功能和界面,以满足特定项目的需求。通过编辑器拓展,开发者可以创建自定义的编辑器窗口、工具栏按钮、菜单项、检视面板等,来增强Unity编辑器的功能和流程。 要创建一个Unity编辑器拓展,你可以使用C#编写一个继承自Editor类的脚本。这个脚本可以通过UnityInspector面板来设置相关的属性和行为。以下是一个简单的示例: ```csharp using UnityEngine; using UnityEditor; public class MyEditorExtension : EditorWindow { [MenuItem("Custom Tools/My Editor Window")] public static void OpenWindow() { // 创建并打开一个自定义的编辑器窗口 MyEditorExtension window = (MyEditorExtension)EditorWindow.GetWindow(typeof(MyEditorExtension)); window.Show(); } private void OnGUI() { // 在编辑器窗口绘制UI元素 GUILayout.Label("Hello, I am a custom editor window!"); if (GUILayout.Button("Click Me")) { Debug.Log("Button clicked!"); } } } ``` 上述代码创建了一个自定义的编辑器窗口,并在窗口绘制了一个标签和一个按钮。通过在Unity编辑器点击"Custom Tools"菜单下的"My Editor Window",可以打开这个自定义的编辑器窗口。 除了编辑器窗口,你还可以通过继承Editor类来创建自定义的检视面板、菜单项等。Unity官方文档有更详细的教程和示例,可以帮助你更深入地了解和使用Unity编辑器拓展

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值