重写 UGUI

重写Button

using UnityEngine;
using UnityEngine.UI;
public class MyButton : Button
{
    [SerializeField] private int _newNumber;
}
using UnityEditor;//编辑器类在UnityEditor命名空间下。所以当使用C#脚本时,你需要在脚本前面加上 "using UnityEditor"引用。
using UnityEditor.UI;//ButtonEditor位于此命名空间下
using UnityEngine;

//指定我们要自定义编辑器的脚本 
[CustomEditor(typeof(MyButton), true)]
//使用了 SerializedObject 和 SerializedProperty 系统,因此,可以自动处理“多对象编辑”,“撤销undo” 和 “预制覆盖prefab override”。
[CanEditMultipleObjects]
public class MyButtonEditor : ButtonEditor
{
    //对应我们在MyButton中创建的字段
    //PS:需要注意一点,使用SerializedProperty 必须在MyButton类_newNumber字段前加[SerializeField]
    [SerializeField]
    public SerializedProperty _newNumber;

    protected override void OnEnable()
    {
        base.OnEnable();
        _newNumber = serializedObject.FindProperty("_newNumber");
    }
    //并且特别注意,如果用这种序列化方式,需要在 OnInspectorGUI 开头和结尾各加一句 serializedObject.Update();  serializedObject.ApplyModifiedProperties();
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        EditorGUILayout.Space();//空行
        serializedObject.Update();
        EditorGUILayout.PropertyField(_newNumber);//显示我们创建的属性
        serializedObject.ApplyModifiedProperties();
    }
}

重写 UGUI_第1张图片
增加了一个值

你可能感兴趣的:(unity)