文章目录
实用特性
可序列化[Serializable]
使用该特性修饰的类,其公有对象可以显示在Inspector面板
[Serializable]
public class TestType
{
public string name;
public int num;
public float price;
}
public class Test_Serializable : MonoBehaviour
{
public TestType type;
}
在属性面板隐藏[HideInInspector]
使变量不显示在 Inspector 中
public class Test_HideInInspector : MonoBehaviour
{
[HideInInspector]
public int age;
}
最小值[Min(最小值)]
设置数值的最小值
public class Test_MinAttribute : MonoBehaviour
{
[Min(1)]
public int age;
}
范围Range
设置数值的最大最小值
public class Test_RangeAttribute : MonoBehaviour
{
[Range(1,100)]
public int rank;
[Range(0.1f, 1)]
public float value;
}
序列化字段[SerializeField]
可以将私有的字段显示在属性面板
public class Test_SerializeField : MonoBehaviour
{
[SerializeField]
int age;
}
花哨特性
提示[Tooltip(提示内容)]
鼠标放在字段名上一段时间后,显示提示文字
public class Test_TooltipAttribute : MonoBehaviour
{
[Tooltip("年龄")]
public int age;
}
空隙[Space]
可以在字段之间空开一定的距离
public class Test_SpaceAttribute : MonoBehaviour
{
public int value;
[Space]
public Vector3 point;
[Space]
[Space]
public string content;
}
标题[Header(标题名)]
用于分割字段,给同一类的字段加上标题
public class Test_HeaderAttribute : MonoBehaviour
{
[Header("基本信息")]
public string name;
public int age;
public bool sex;
[Header("其它信息")]
public string address;
}
菜单相关特性
添加Component中的子菜单[AddComponentMenu(菜单项目录)]
使用该特性,可以将已有的脚本放在菜单栏Component下的任意位置,默认是在Scripts中
[AddComponentMenu("梁志文/AttributesTest")]
public class AttributesTest : MonoBehaviour
{
}
为组件添加菜单[ContextMenu(菜单名)]
使用该特性可以将某个函数以菜单方式添加到Inspector面板
public class Test_ContextMenu : MonoBehaviour
{
[ContextMenu("打个招呼")]
public void Test()
{
print("你好");
}
}
为变量添加菜单[ContextMenuItemAttribute(菜单名,函数名)]
使用该特性可以为某个字段(变量)添加一个菜单,右击字段会显示菜单
public class Test_ContextMenuItemAttribute : MonoBehaviour
{
[ContextMenuItem("清空文本", "ClearText")]
public string text;
void ClearText()
{
text = "";
}
}
组件相关特性
自动添加组件[RequireComponent(typeof(类名))]
使用该特性修饰的类,类所挂载的物体会自动添加指定类名的组件
[RequireComponent(typeof(Rigidbody))]
public class Test_RequireComponent : MonoBehaviour
{
}
禁用重复添加同一组件[DisallowMultipleComponent]
使用该特性可以防止某个组件不小心添加了多次
[DisallowMultipleComponent]
public class Test_DisallowMultipleComponent : MonoBehaviour
{
}
有DisallowMultipleComponent特性的组件只能添加一个,否则可以添加多次
文本相关特性
文本区域[TextArea(最小行数,最大行数)]
当文本内容超过最大行数时,显示滚动条
public class Test_TextAreaAttribute : MonoBehaviour
{
[TextArea(2,4)]
public string info;
}
文本多行[Multiline(行数)]
设置文本框的行数
public class Test_MultilineAttribute : MonoBehaviour
{
[Multiline(2)]
public string name;
[Multiline(5)]
public string info;
}
其它特性
延时传递[DelayedAttribute]
可以延迟传递数值,当按下回车或失去焦点时,数据才会传递给变量
public class Test_DelayedAttribute : MonoBehaviour
{
[DelayedAttribute]
public int value = 100;
int oldValue;
// Start is called before the first frame update
void Start()
{
oldValue = value;
}
// Update is called once per frame
void Update()
{
if (oldValue != value)
{
string message = string.Format("数值发生改变\n原数值:{0}\n新数值:{1}", oldValue, value);
oldValue = value;
print(message);
}
}
}
修改数值后,只有当按下回车,或者鼠标点击输入框之外,Value的值才会改变
总是执行[ExecuteAlways]
脚本挂载到GameObject上时一直执行,不论是在播放模式还是编辑模式。(没加该特性时,只有在播放模式才执行)
[ExecuteAlways]
public class Test_ExecuteAlways : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
if(Application.IsPlaying(this.gameObject))
{
print("在播放模式下开始运行");
}
else
{
print("在编辑模式下开始运行");
}
}
// Update is called once per frame
void Update()
{
if (Application.IsPlaying(this.gameObject))
{
print("在播放模式下运行中");
}
else
{
print("在编辑模式下运行中");
}
}
}
- 编辑模式
- 播放模式
帮助链接[HelpURL(链接)]
点击问号❓,跳转的帮助文档链接
[HelpURL("https://blog.csdn.net/weixin_44611096/category_10287911.html")]
public class Test_HelpURLAttribute : MonoBehaviour
{
}