Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


软件:unity:标签属性

Unity标签属性

Attribute实际上是C#的一个语法


使用方式

// 在声明变量的上面,使用中括号包括一个描述符,即为这个变量添加一个属性
[HideInInspector]
public int value;

常用属性

  • HideInInspector:将公有的变量在Inspector面板上隐藏
  • System.Serializable:让其他类中的变量显示在Inspector面板上,这个不太好理解,看下面代码
using UnityEngine;
 
// 这个是脚本类
public class Test : MonoBehaviour
{
    public A a; // a.value会在编辑器中显示出来
}
 
// 这个是自定义类
[System.Serializable]
public class A
{
    public int value;
}
  • SerializeField:私有的变量在Inspector面板上显示,但此变量的访问级别还是私有的,序列化应该还有其他的作用
  • Header(“标题内容”):给变量添加标题
  • Space(间距数值):给变量间添加间距
  • Tooltip(“悬停内容”):给变量添加悬停内容
  • Range(min,max):给int、float、double这种数字类型变量添加范围
  • Multiline(行数):给string类型变量设置行数
  • TextArea:把string类型变量在Inspector面板的显示变成一个TextArea
  • ColorUsage(是否可以设置透明度):如描述
  • FormerlySerializedAs(“原始的变量名”):用于修改变量名后,又不想造成影响(引用丢失)
  • CreateAssetMenu(fileName=“创建的文件名”,menuName=“层级/结构”,“order”=排序序号):在Project面板下创建一个配置文件,方便进行数据的管理(只能给类添加这个属性),继承ScriptableObject的类必须创建单独的脚本,见下面代码
using UnityEngine;
 
[CreateAssetMenu(fileName = "PlayerData", menuName = "创建配置文件/Player/创建玩家信息")]
public class Test : ScriptableObject
{
    [Header("速度")]
    public int speed;
}
  • MenuItem(“层级/结构 [快捷键]”,priority = 优先级):为工具栏提供自定义按钮(使用MenuItem属性还可以为Inspector面板组件的小齿轮下增加按钮:[MenuItem(“CONTEXT/脚本名/新增的按钮名”)])
  • AddComponentMenu(层级/结构):将此脚本添加到组件栏中(只能给类添加这个属性)
  • RequireComponent(typeof(添加的组件)):添加此脚本时如果没有Require的组件则自动添加(只能给类添加这个属性)
  • ContextMenu(“自定义的操作名”)或MenuItem(“CONTEXT/脚本名/新增的按钮名”):为Inspector面板的小齿轮下增加按钮(只能给方法添加这个属性)
  • MenuCommand:再了解一下,和MenuItem配合使用
  • ContextMenuItem(“操作名”, “执行的方法名”):为字段添加一个右键菜单,执行一个此类中的方法(只能给字段添加这个属性),见下面的代码
public class Test : MonoBehaviour
{
    [ContextMenuItem("Mytest", "MyMethon")] // 编辑器中右键这个字段会有上下文菜单,菜单中可以执行MyMethon
    public int value;
 
    public void MyMethon()
    {
        Debug.Log("这是我的测试方法");
    }
}
  • HelpURL(“url”):点击书本按钮打开所定义的url网址(只能给类添加这个属性)
  • DisallowMultipleComponent:使一个物体只能添加一个此脚本(只能给类添加这个属性)
  • ExecuteInEditMode:让此脚本在Editor模式下也能执行Start、Update、OnGUI等方法(只能给类添加这个属性)
  • MonoPInvokeCallback(接收的代理类型):C#(托管代码)中注册方法可以从C++/C(非托管代码)调用
  • DllImport(“DLL名称”):C++/C(非托管代码) 的方法可以从C#调用

总结:后面的一些很复杂,现在只是记录,后面要继续学习

/var/www/DokuWikiStick/dokuwiki/data/pages/软件/unity/标签属性.txt · Last modified: 2022/08/03 18:31 (external edit)