解决变量重命名后 unity 的 inspector 中的引用值丢失的问题
using UnityEngine.Serialization;
class Test
{
[FormerlySerializedAs("m_OldName")]
public int m_NewName; // m_OldName 为修改前的名字
}
在编辑模式下执行脚本
using UnityEditor;
[ExecuteInEditMode]
class Test
{
}
禁止添加多个脚本在同一物体上
using UnityEditor;
[DisallowMultipleComponent]
class Test
{
}
提示方法已经过时
using System;
class Test
{
[Obsolete("Use NewMethod instead")]
public void OldMethod()
{
}
public void NewMethod()
{
}
}
物体有多个子物体,点击子物体直接选中父物体
脚本添加与父物体上
using UnityEditor;
[SelectionBase]
class Test
{
}
禁止调节颜色透明度
using UnityEditor;
class Test
{
// 参数说明:第一个参数是否允许调节透明度
// 第二个参数是否允许使用HDR
[ColorUsage(false, false)]
public Color color;
}
要求必须使用某个属性
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
class Test
{
}
添加菜单功能
[AddComponentMenu("MyMenu/Do Something")]
using UnityEditor;
class Test
{
[MenuItem("GameObject/MyMenu/Do Something")]
static void DoSomething()
{
}
}
HelpURL
using UnityEngine;
[HelpURL("https://www.baidu.com")]
class Test
{
}
OnOpenAssetAttribute
using UnityEditor;
class Test
{
[OnOpenAsset]
static bool OnOpenAsset(int instanceID, int line)
{
return false;
}
}
设置脚本的执行顺序
using UnityEditor;
[DefaultExecutionOrder(100)]
class Test
{
}
HeaderAttribute
using UnityEngine;
class Test
{
[Header("Header")]
public int a;
[Space(10)]
[Range(0, 10)]
[Tooltip("Tooltip")]
[TextArea(3, 10)]
[MultiLine(3)]
}
一个类或者结构体需要序列化才能在 inspector 中显示
using System;
[System.Serializable]
class Test
{
}
ContextMenu 可以在 inspector 中右键调用方法
using UnityEngine;
class Test
{
[ContextMenu("Random_a","Random_a")]
public int a;
[ContextMenu("Do Something")]
void DoSomething()
{
}
void Random_a()
{
a = Random.Range(0, 10);
}
}
自定义组件
using UnityEngine;
[CustomEditor(typeof(Test))]
class TestEditor : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
}
}
inspector 中添加按钮
using UnityEngine;
[CustomEditor(typeof(Test))]
class TestEditor : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
if (GUILayout.Button("Do Something"))
{
}
}
}