unity之插件学习笔记

这篇博客详细介绍了Unity中菜单项的使用,包括MenuItem、AddComponentMenu、ContextMenu和RequireComponent,讲解了如何通过这些工具自定义组件的添加和快捷方式。此外,还探讨了自定义Inspector,特别是属性相关标识的使用,以及如何实现自定义界面属性,以便在Editor中更灵活地调整枚举值和属性显示。

菜单项

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值