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);
    }

在这里插入图片描述
空格+ _w 表示快捷键为w字母

组件菜单 AddComponentMenu

在这里插入图片描述
在这里插入图片描述

上下文菜单 ContextMenu

在这里插入图片描述
在这里插入图片描述

必要组件菜单RequireComponent

在这里插入图片描述
下次创建该组件的同事会自动添加rigibody组件
在这里插入图片描述

自定义Inspector(属性界面)

在这里插入图片描述

属性相关标识

声明可序列化,可以让自定义的类显示在属性面板
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

自定义界面属性

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();
    }
}

在这里插入图片描述
在这里插入图片描述

发布了81 篇原创文章 · 获赞 28 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览