unity之插件学习笔记

菜单项

菜单项菜单 MenuItem

    [MenuItem("Menu/Test1 _w")]
    public static void Test()
    {
        Debug.Log(111);
    }
    [MenuItem("Menu/Test% %w")]
    public static void Test1()
    {
        Debug.Log(111);
    }
    [MenuItem("Menu/Test& &w")]
    public static void Test2()
    {
        Debug.Log(111);
    }
    [MenuItem("Menu/Test# #w")]
    public static void Test3()
    {
        Debug.Log(111);
    }

unity之插件学习笔记_第1张图片
空格+ _w 表示快捷键为w字母

组件菜单 AddComponentMenu

unity之插件学习笔记_第2张图片
unity之插件学习笔记_第3张图片

上下文菜单 ContextMenu

unity之插件学习笔记_第4张图片
unity之插件学习笔记_第5张图片

必要组件菜单RequireComponent

unity之插件学习笔记_第6张图片
下次创建该组件的同事会自动添加rigibody组件
unity之插件学习笔记_第7张图片

自定义Inspector(属性界面)

unity之插件学习笔记_第8张图片

属性相关标识

声明可序列化,可以让自定义的类显示在属性面板
unity之插件学习笔记_第9张图片

unity之插件学习笔记_第10张图片

unity之插件学习笔记_第11张图片

自定义界面属性

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test3 : MonoBehaviour
{
    public Enum3 mEnum;
    public int mInt;
    public float mFloat;
    public string mStr;
    public Color mColor;
}

public enum Enum3
{
    None,
    IntVal,
    FloatVal,
    StrVal,
    ColorVal
}

在Editor创建自定义类,实现修改枚举值同时修改显示属性

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Test3))] //与Test3进行关联
public class Test3Inspector : Editor
{
    public SerializedObject mObj;
    public SerializedProperty mEnum;
    public SerializedProperty mInt;
    public SerializedProperty mFloat;
    public SerializedProperty mStr;
    public SerializedProperty mColor;

    public void OnEnable()
    {
        this.mObj = new SerializedObject(target);
        this.mEnum = this.mObj.FindProperty("mEnum");
        mInt = mObj.FindProperty("mInt");
        mFloat = mObj.FindProperty("mFloat");
        mStr = mObj.FindProperty("mStr");
        mColor = mObj.FindProperty("mColor");
    }

    public override void OnInspectorGUI()
    {
        //base.OnInspectorGUI();
        this.mObj.Update();
        EditorGUILayout.PropertyField(mEnum);
        switch (this.mEnum.enumValueIndex)
        {
            case 1:
                EditorGUILayout.PropertyField(mInt);
                break;
            case 2:
                EditorGUILayout.PropertyField(mFloat);
                break;
            case 3:
                EditorGUILayout.PropertyField(mStr);
                break;
            case 4:
                EditorGUILayout.PropertyField(mColor);
                break;
        }
        this.mObj.ApplyModifiedProperties();
    }
}

unity之插件学习笔记_第12张图片
unity之插件学习笔记_第13张图片

你可能感兴趣的:(Unity3D)