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


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

2万+

被折叠的 条评论
为什么被折叠?



