[Unity] Inspector自定义

using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(TButton))]
internal sealed class TButtonInspector :Editor
{
    SerializedProperty OnClick = null;
    SerializedProperty Interactable = null;
    public enum Transition
    {
        None,
        ColorTint,
        SpriteSwap,
        Animation
    }
    private GameObject graphic;
    private Transition transition = Transition.ColorTint;
    public override void OnInspectorGUI()
    {
        EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode);
        {
            EditorGUILayout.PropertyField(Interactable);
            EditorGUILayout.EnumPopup("Transition", transition);
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.BeginVertical(GUILayout.Width(6));
            EditorGUILayout.Space();
            EditorGUILayout.EndVertical();
            EditorGUILayout.BeginVertical();
            EditorGUILayout.ObjectField("Target graphic", graphic, typeof(GameObject), false);
            if (graphic == null)
                EditorGUILayout.HelpBox("You must have Target graphic", MessageType.Warning);
            EditorGUILayout.ColorField("Normal Color", Color.white);
            EditorGUILayout.ColorField("Highlighted Color", Color.white);
            EditorGUILayout.ColorField("Pressed Color", Color.gray);
            EditorGUILayout.ColorField("Disabled Color", Color.gray);
            EditorGUILayout.Slider("Color Multiplier", 1, 1, 10);
            EditorGUILayout.FloatField("Fade Duration", 0.1f);
            EditorGUILayout.EnumPopup("Navigation", transition);

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.BeginVertical(GUILayout.Width(180));
            EditorGUILayout.Space();
            EditorGUILayout.EndVertical();
            EditorGUILayout.BeginVertical();
            if (GUILayout.Button("Visualize"))
            {
                Debug.Log("检测到点击了");
            }
            EditorGUILayout.EndVertical();
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.PropertyField(OnClick);
        }
        EditorGUI.EndDisabledGroup();
        serializedObject.ApplyModifiedProperties();
    }

    private void OnEnable()
    {
        Interactable = serializedObject.FindProperty("Interactable");
        OnClick = serializedObject.FindProperty("onClick");
    }
}
using System;
using UnityEngine;
using UnityEngine.Events;

[DisallowMultipleComponent]
public class TButton : MonoBehaviour
{
    [SerializeField]
    private bool Interactable = true;
    [SerializeField]
    private OnClick onClick;
}

[Serializable]
public class OnClick : UnityEvent { }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Little丶Seven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值