UnityEditor(编辑器扩展) 学习笔记 (一)常用属性 Attribute
程序员文章站
2022-07-14 11:17:56
...
一、Header
用来给属性添加标题文字:
public class Test : MonoBehaviour
{
[Header("用户名:")]
public string UserName;
}
二、Tooltip
显示属性标签的提示文字:
public class Test : MonoBehaviour
{
[Tooltip("用户地址")]
public string Address;
}
三、Space
空间占位,两个属性快之间的间隔距离:
public class Test : MonoBehaviour
{
[Tooltip("用户地址")]
public string Address;
[Space(50)]
public int Age;
}
四、Range
给属性值添加一个区域滑块
public class Test : MonoBehaviour
{
[Range(0, 1)]
public float speed = 0.5f;
}
五、Multiline
多行文本
public class Test : MonoBehaviour
{
[Multiline(5)]
public string testStr;
}
六、SerializeField
序列化域,可以将私有变量序列化,让其可以显示在Inspector面板中
public class Test : MonoBehaviour
{
[SerializeField]
private string text;
}
七、NonSerialized
与SerializeField相对应NonSerialized不可被序列化,且不能在Inspector面板中显示
public class Test : MonoBehaviour
{
[SerializeField]
private string text;
[NonSerialized]
public int number;
}
八、HideInInspector
隐藏属性在面板上的显示,切勿和NonSerialized混淆,HideInInspector只是隐藏属性在面板上的显示和序列化无关
public class Test : MonoBehaviour
{
[HideInInspector]
public int number;
}
九、TextArea
文本区域,区别于Multiline,TextArea超出固定行数后会出现滚动条
public class Test : MonoBehaviour
{
[Multiline(5)]
public string text1;
// 两个参数分别是最小和最大行数,超出最大行数会出现滚动条
[TextArea(1,5)]
public string text2;
}
十、HelpURL
帮助文档链接地址
[HelpURL("https://www.baidu.com/")]
public class Test : MonoBehaviour
{
}
点击图中红色标记的帮助文档按钮,会跳转到指定的"https://www.baidu.com/"链接地址
十一、AddComponentMenu
AddComponentMenu 属性允许用在Component菜单下面为脚本创建快捷添加菜单
using UnityEngine;
[AddComponentMenu("Add Test Script")]
public class Test : MonoBehaviour
{
}
十二、RequireComponent
自动添加你定义的组件(如果脚本已经挂在在物体上,在此时添加RequireComponent特性,需要重新挂在脚本才刷新)
用此特性添加的组件不能单独卸载,要卸载添加的组件,必须先卸载带有此特性的脚本
using UnityEngine;
[AddComponentMenu("Add Test Script")]
[RequireComponent(typeof(BoxCollider))]
public class Test : MonoBehaviour
{
}
十三、ContextMenu
ContextMenu特性允许用户为脚本添加一个命令,用户可以通过在脚本上右键,或者点击后面的小齿轮在下拉菜单中
找到自定义的命令方法,且是在非运行状态下执行该函数;
using UnityEngine;
public class Test : MonoBehaviour
{
public string txt = "Hello...";
[ContextMenu("SayHello")]
void SayHello()
{
Debug.Log("输出文字:" + txt);
}
}
十四、ContextMenuItem
ContextMenuItem和ContextMenu功能相似,只是ContextMenuItem作用于变量属性
using UnityEngine;
public class Test : MonoBehaviour
{
// 第一个参数是在面板上显示的调用名称
// 第二个参数是调用的方法
[ContextMenuItem("SayHello", "SayHello")]
public string txt = "Hello...";
void SayHello()
{
Debug.Log("输出文字:" + txt);
}
}
十五、DisallowMultipleComponent
DisallowMultipleComponent特性使得该脚本组件不能被重复添加
using UnityEngine;
[DisallowMultipleComponent]
public class Test : MonoBehaviour
{
}
十六、CreateAssetMenu
快速的创建ScriptableObject派生类的实例,并存储成以“.asset"结尾的文件
using UnityEngine;
[CreateAssetMenu(fileName = "UserInfo",menuName ="Create UserInfo")]
public class Test : ScriptableObject
{
public string userName;
public int age;
}