Unity标签

※ ※ ※ [Header] 标头属性
在代码中声明:

 	[Header("名称")]
    public string roleName;//人名
    public string desc;//人物介绍


    [Header("角色属性")]
    public float hp;//血量
    public float mp;//法力值
    public float speed;//移动速度
    public float atk;//攻击力
    public float def;//防御力

编辑器中出现的效果:
Unity标签_第1张图片
※ ※ ※ [Tooltip] 提示信息
在代码中声明:

 	[Header("名称")]

    [Tooltip("该角色在游戏中的名称")]
    public string roleName;//人名
    [Tooltip("角色的描述信息")]
    public string desc;//人物介绍
    

把鼠标长时间放在变量名上 会 出现的效果:
Unity标签_第2张图片
※ ※ ※ [Space] 添加空行
在代码中声明:

 	[Header("名称")]
    [Space]

    [Tooltip("该角色在游戏中的名称")]
    public string roleName;//人名
    public string nickName;//昵称

    [Space]

    [Tooltip("角色的描述信息")]
    public string desc;//人物介绍

在编辑器Inspecter面板上出现的效果:
Unity标签_第3张图片

※ ※ ※ [Range()] 规定范围
在代码中声明:

    [Header("角色属性")]
    [Space]

    [Range(0,10000)]//hp的取值范围是0~10000
    public float hp;//血量

    public float mp;//法力值

    public float speed;//移动速度

    public float atk;//攻击力

    public float def;//防御力

在编辑器Inspecter面板上出现的效果:
Unity标签_第4张图片

※ ※ ※ [SerializeField] 序列化字段
下面代码中的level字段是私有的。添加此标签可在inspecter面板中显示

	
    [Header("角色属性")]
    [Space]

    [Range(0,10000)]//hp的取值范围是0~10000
    public float hp;//血量
    
    public float mp;//法力值

    public float speed;//移动速度

    public float atk;//攻击力

    public float def;//防御力

    [SerializeField]//序列化字段
    private int level;//等级

编辑器中的效果:
Unity标签_第5张图片
※ ※ ※ [HideInInspector] 隐藏字段
下面代码中的exp字段是公开的。添加此标签可在inspecter面板中隐藏


    [Header("角色属性")]
    [Space]

    [Range(0,10000)]//hp的取值范围是0~10000
    public float hp;//血量
    
    public float mp;//法力值

    public float speed;//移动速度

    public float atk;//攻击力

    public float def;//防御力

    [SerializeField]//序列化字段
    private int level;//等级

    [HideInInspector]//隐藏exp字段
    public int exp;//经验

编辑器中的效果:
Unity标签_第6张图片
※ ※ ※ [TextArea] 设置文本区域
在 string 变量上添加此标签,可编辑写入区域的大小
如下代码中在desc变量上添加了此标签后

 	[Header("名称")]
    [Space]

    [Tooltip("该角色在游戏中的名称")]
    public string roleName;//人名
    [Tooltip("该角色的昵称")]
    public string nickName;//昵称

    [Space]

    [TextArea(2,30)]//默认显示2行,最多显示30行,再多用滚动条显示
    public string desc;//人物介绍

在编辑器中的效果
Unity标签_第7张图片

※ ※ ※ OnValidate() 验证数据的函数(贼实用)
在一个类中声明一些变量,想要对这些变量进行验证的时候可以使用。(之后对类的变量做出修改的才会调用该函数)示例代码如下

 	
public class Role : MonoBehaviour
{
    public List nums;

    public int hp;
    
    private void OnValidate()
    {
        while (nums.Count > 2)
        {
            nums.RemoveAt(nums.Count - 1);
        }

        if (hp > 100) hp = 100;
        if (hp < 0) hp = 0;
    }
}

在代码中:规定的nums集合的长度和hp的赋值范围。
在编辑器中改变nums时,他的长度最多为2;给hp赋值时,value如果大于100那么hp就是100,value如果小于0,那么hp就是0.
Unity标签_第8张图片按下回车键之后Unity标签_第9张图片

※ ※ ※ [ContextMenuItem]
该标签声明在变量上面,给此变量添加右键菜单

public class MyTest : MonoBehaviour
{
    /// 
    /// 给一个变量添加右键菜单
    /// 第一个参数是菜单的名称
    /// 第二个参数是右键点击的回调函数
    /// 
    [ContextMenuItem("MenuButton", "ClickMenuButtonCallbak")]
    public string menuItem;

    private void ClickMenuButtonCallbak()
    {
        Debug.Log("111");
    }
}

效果:Inspector面板上,鼠标右击变量,点击MenuButton按钮
在这里插入图片描述
在这里插入图片描述

※ ※ ※ [Multiline(int)]
修饰string字段,显示x行输入框

public class MyTest : MonoBehaviour
{
    [Multiline(3)]
    public string multiline;
}

效果:
Unity标签_第10张图片

※ ※ ※ [RequireComponent()]
该标签声明在类上面,与某个类关联使用,如下所示,挂在MyTest.cs时也需要挂载Image组件

[RequireComponent(typeof(Image))]
public class MyTest : MonoBehaviour
{
    private void Awake()
    {
        
    }
}

在这里插入图片描述

※ ※ ※ [ExecuteInEditMode()]
声明在类上面,加上此属性后,不运行程序,也能执行脚本。

[ExecuteInEditMode]
public class MyTest : MonoBehaviour
{
    private void Start()
    {
        Debug.Log("start");
    }

    private void Update()
    {
        Debug.Log("update");
    }
}

※ ※ ※ [AddComponentMenu] 组件添加菜单中
该标签声明在类上面,把类添加到菜单路径中


[AddComponentMenu("MyScripte/Role")]
public class Role : MonoBehaviour
{
    
}

编辑器中的效果:
Unity标签_第11张图片Unity标签_第12张图片

※ ※ ※ [RuntimeInitializeOnLoadMethod]
该标签声明在方法上面,表示游戏初始时先执行此函数

[RuntimeInitializeOnLoadMethod]
public static void GameInit()
{
    Debug.Log("游戏初始时先运行此函数");
}

※ ※ ※ [ContextMenu]
该标签声明在方法上面,将函数添加到组件的上下文菜单中。

[ContextMenu("TestBtn")]
private void Test()
{
    Debug.Log("111");
}

效果:
Unity标签_第13张图片

※ ※ ※ [MenuItem]
声明在静态函数上,在Unity菜单中出现选项栏,执行对应功能

[MenuItem("自定义菜单栏/第一级/Debug")]
private static void MyDebug()
{
   Debug.Log(111);
}

在这里插入图片描述

※ ※ ※ 某脚本在Inspector面板上添加扩展按钮

public class MyTest : MonoBehaviour
{
    
}
[CustomEditor(typeof(MyTest))]
public class EditorTest : Editor
{
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        if (GUILayout.Button("拓展按钮"))
        {
            Debug.LogError("111");
        }
    }    
}

效果:
在这里插入图片描述
点击后LogError:111
在这里插入图片描述

你可能感兴趣的:(实习笔记,unity)