大多数程序都是用来处理数据的,他们读,写,操作和显示数据,图形也是一种数据。

     程序员为某种目的创建和使用一些类型,因此,在设计时必须理解所使用类型的特性

     有关程序及其类型的数据被称为元数据,他们保存在程序的程序集中,程序在运行时,可以查看其它程序集或本身的元数据。查看的行为叫反射,比如Type类。

     特性是一种允许我们向程序集增加元数据的语言结构。他用于保存程序结构信息的某种特殊类型的类。特性的目的是告诉编译器把程序结构的某组元数据嵌入程序集。我们可以

通过把特性应用到结构来实现。

      下面是Unity3d中应用特性的实例。

public class PathTool : ScriptableObject {

	[MenuItem("PathTool/Set Parent %q")]
    static void SetParent()
    {
        Debug.Log("Perform operation");
    }
    [MenuItem("PathTool/Set Parent %q", true)]
    static bool VallidateSelectiom()
    {
        if (Selection.activeGameObject == null)
            return false;
        else { return true; }
    }
}

  

在编辑器状态下执行的脚本必须反正Editor文件下。

在非Editor文件下并把脚本放在别的对象上。

public class GameManager : MonoBehaviour {

	[ContextMenu("BuildPath")]
    void BuildPath()
    {
        Debug.Log("Perform Operation");
    }
}