<span style="font-size:24px;">[Header("名字")]
public string name = "阿黄";</span>
<span style="font-size:24px;"> //设置多行输入的文本字段。
[MultilineAttribute]
public string mText;</span>
<span style="font-size:24px;">//设置多行输入的文本字段。您可以设置的最大值和最小值的行数。
[SerializeField, TextAreaAttribute(2, 5)]
public string mText2;</span>
<span style="font-size:24px;">[SerializeField, Range(0, 5)]
public int count;
//如果鼠标光标是在字段上,显示的这是count1
[SerializeField, TooltipAttribute("这是count1")]
public int count1;</span>
<span style="font-size:24px;">[ContextMenu("Init")]
void Init()
{
Debug.Log("正在初始化");
}</span>
ExecuteInEditMode
默认状态下,MonoBehavior中的Start,Update,OnGUI等方法,需要在Play的状态下才会被执行。
这个属性让Class在Editor模式(非Play模式)下也能执行。
但是与Play模式也有一些区别。
例如:
Update方法只在Scene编辑器中有物体产生变化时,才会被调用。
OnGUI方法只在GameView接收到事件时,才会被调用。
RuntimeInitializeOnLoadMethodAttribute
此属性仅在Unity5上可用。
在游戏启动时,会自动调用添加了该属性的方法。
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour
{
[RuntimeInitializeOnLoadMethod]
static void OnRuntimeMethodLoad()
{
Debug.Log("Game loaded and is running");
}
}
SerializeField
在变量上使用该属性,可以强制该变量进行序列化。即可以在Editor上对变量的值进行编辑,即使变量是private的也可以。
在UI开发中经常可见到对private的组件进行强制序列化的用法。
例子
public class TestSerializeField : MonoBehaviour {
[SerializeField]
private string name;
[SerializeField]
private Button _button;
}
MenuItem
在方法上使用,可以在Editor中创建一个菜单项,点击后执行该方法,可以利用该属性做很多扩展功能。 需要方法为static。
例子:
using UnityEngine;
using System.Collections;
using UnityEditor;
public class EditorTest : MonoBehaviour
{
[MenuItem("MyMenu/Create GameObject")]
public static void CreateGameObject()
{
new GameObject("阿黄是一条好汪");
}
}