Unity3D 编辑器功能之MonoBehaviour属性

原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 QQ群:【Unity3D(AR/VR) 334163814】【Unity3D(游戏) 119706192】 本文链接地址:Unity3D 编辑器功能之MonoBehaviour属性

using System;
using UnityEngine;

public class Test : MonoBehaviour
{
    #region 编辑Inspector视图
    /// 
    /// 只能输入 0-1的值
    /// 
    [Range(0f, 1f)]
    public float tRange = 1f;

    /// 
    /// 输入时的提示
    /// 
    [Tooltip("Tooltip_test")]
    public float tTooltip = 1f;

    /// 
    /// 标头
    /// 
    [Header("Header_test")]
    public float tHeader = 1f;

    /// 
    /// 距离上一行50px
    /// 
    [Space(50)]
    public float tSpace = 1f;

    /// 
    /// 隐藏该属性(依然会被实例化)
    /// 
    [HideInInspector]
    public float tHideInInspector = 1f;

    #endregion

    #region 编辑MonoBehaviour功能
    /// 
    /// 在标题栏Component中添加("Duan/AddComponentMenu_test")层级。
    /// 点击将(Test)脚本绑定到当前选中的gameobject上。
    ///(Test)脚本名必须与文件名一致,(单独的Class文件)。
    /// 
    //[AddComponentMenu("Duan/AddComponentMenu_test")]
    //public class Test : MonoBehaviour{}

    /// 
    /// 在辑模式运行Update、FixedUpdate和OnGUI。
    /// 
    //[ExecuteInEditMode]
    //public class Test : MonoBehaviour{}

    /// 
    /// 强制要求该脚本的gameobject必须同时绑定了Rigidbody组件,如果没有则立即添加。
    /// 
    //[RequireComponent(typeof(Rigidbody))]
    //public class Test : MonoBehaviour{}

    /// 
    /// 给当前脚本添加右键(或小齿轮)选项
    /// 点击调用该方法。
    /// 
    [ContextMenu("ContextMenu Test")]
    public void mContextMenu()
    {
        Debug.Log("ContextMenu Test Log");
    }

    /// 
    /// 在标题栏中添加("Duan/MenuItem")层级。
    /// 点击调用该方法。
    /// 该方法必须是static的。
    /// 
    [MenuItem("Duan/MenuItem")]
    public static void tMenuItem()
    {
        Debug.Log("MenuItem Test Log");
    }
    #endregion 

    #region 编辑属性
    /// 
    /// 标记一个变量或方法不会被序列化
    /// 
    [NonSerialized]
    public float tNonSerialized = 1f;

    /// 
    /// 该类可以被序列化 (序列化就是把内存中对象以一种可以保存的形式保存起来。 )
    /// 
    [Serializable]
    public class Serializable{ }

    /// 
    /// 强制序列化属性(Unity只序列化Public属性。序列化Private添加[SerializeField]。)
    /// 
    [SerializeField]
    private bool tSerializeField = true;
    #endregion
}


你可能感兴趣的:(Unity3D,Unity3D_插件)