在Unity中有一些比较常用的注解:
1、[SerializeField]:将私有字段或属性显示在 Unity 编辑器中,使其可以在 Inspector 窗口中进行编辑。
2、[Range(min, max)]:限制数值字段或属性的范围,在 Inspector 窗口中以滑动条的形式进行编辑。
3、[Header("Text")]:在 Inspector 窗口中给字段或属性添加标题。
4、[Tooltip("Text")]:在 Inspector 窗口中给字段或属性添加工具提示。
比如我在脚本中做了这些注解:
在 Inspector 窗口下我们会看到如下效果:
5、[HideInInspector]:隐藏字段或属性,做了这个标记,在 Inspector 窗口中将不显示该字段或属性。
如:
定义了公共布尔值,但是窗口隐藏了该布尔值。
6、[RequireComponent(typeof(ComponentType))]:确保脚本所在的 GameObject 上附加了指定的组件。
如:
[RequireComponent(typeof(Rigidbody))]
public class MyScript : MonoBehaviour
{// ...
}
这样就确保该组件必须附加Rigidbody组件,即使没有,将会自动添加。
这也是我们经常会碰到那些我们想要删除却删除不了的组件,那是因为有脚本绑定了该组件为附加组件了,只有先删除定义的绑定脚本才能删除。
7、[ContextMenu("Text")]:在 Inspector 窗口中给方法添加上下文菜单。
如:
当我在Annotate的DoSomething加了[ContextMenu("Do Something")],那么在编辑器中我右键组件中的Annotate脚本,就可以看到"Do Something"菜单,通过点击可运行该方法。
8、[Serializable]:这个就比较常见了。它主要标记类或结构体可序列化。其中[Serializable]注解的类需要满足以下条件:
- 类必须是公共类(public class)。
- 类必须是非嵌套类(不能是其他类的内部类)。
- 类的所有字段(包括私有字段)都必须是可序列化的类型或标记为
[Serializable]
。
被标记为 [Serializable],可以对该类进行序列化和反序列化的操作。
还有,当我们使用[Serializable]注解结构体时,可以使得公共类在 Inspector 窗口是可见的。这个也是比较常用的。
9、[ExecuteInEditMode]:在编辑器模式下执行脚本,用于在编辑器中实时预览某些效果。
使用该标记,当脚本所在的 GameObject 在编辑器中被激活、属性发生变化或者Transform 发生变化时,就会执行被注解的脚本。这可以方便我们在编辑模式下就行一些调参或者查看效果,而无需来回切换到播放模式。