您的位置:首页 > 编程语言 > C#

【C#】常用的一些特性

2016-01-27 11:21 405 查看
<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("阿黄是一条好汪");
}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: