Unity常用特性(Attribute)用法
一.UnityEngine命名空间
1.[Header(string)]
inspector面板上给显示的字段上加一个描述
通常情况下,用于在 Inspector 窗口中创建字段的逻辑分组
public class AttributeTest : MonoBehaviour
{[Header("public_field_num")]public int num;
}

2.[Tooltip(string)]
在inspector面板上的该字段停留时会显示提示
public class AttributeTest : MonoBehaviour
{[Tooltip("show_num_tip")]public int num;
}

3.[Space(float)]
inspector面板中添加垂直空间,使得不同的属性组之间有明确的分隔,参数指定了间距的像素值
public class AttributeTest : MonoBehaviour
{[Space(20.0f)]public int num;
}

4.[Range(float min, float max)]
限制数值变量的取值范围并以滑动条显示在Inspector中
public class AttributeTest : MonoBehaviour
{[Range(1.0f, 5.0f)]public int num;
}

5.[Min(float)]
限制一个 float或int 类型的变量的最小值
public class AttributeTest : MonoBehaviour
{[Min(1)]public int num;
}

6.[AddComponentMenu(string]
用于自定义在 Unity 编辑器的 “Component” 菜单中显示的脚本的位置。
这个特性允许你将脚本添加到特定的菜单路径下,以便更好地组织你的自定义组件。
在 Unity 中,通常情况下,你创建的所有脚本将显示在 “Component/Scripts” 菜单中。这可能会导致菜单变得混乱不堪,尤其是在复杂的项目中。为了解决这个问题,你可以使用 AddComponentMenu特性来将脚本分类和组织。
[AddComponentMenu("Menu/AttributeTest")]
public class AttributeTest : MonoBehaviour
{public int num;
}

7.[ColorUsage(bool, bool)]
用于指定颜色字段的属性,以便在 Inspector 窗口中显示颜色拾取器,允许用户选择颜色。
ColorUsageAttribute 的参数有两个:
Show Alpha: 这是一个布尔值,用于指定是否显示颜色拾取器中的 Alpha 透明度通道。如果设置为 true,则颜色拾取器将包括 Alpha 透明度通道,允许用户选择带有透明度的颜色。
HDR: 一个布尔值,用于指定颜色是否使用高动态范围 (HDR)。如果设置为 true,颜色值将被视为 HDR 颜色,可以具有更高的亮度和对比度范围。
[AddComponentMenu("Menu/AttributeTest")]
public class AttributeTest : MonoBehaviour
{[ColorUsage(true, true)]public Color myColor;
}
8.[ContextMenu(string)]
用于在 Inspector 窗口中为组件或脚本添加上下文菜单
这个特性通常用于自定义编辑器扩展,以便提供额外的工具或便捷的功能。例如,你可以在脚本中的方法上添加一个上下文菜单项,当点击该菜单项时,会触发方法执行,用于执行特定任务。
public class AttributeTest : MonoBehaviour
{[ContextMenu("Do Something")]private void CustomMethod(){// 当在 Inspector 中的上下文菜单中选择 "Do Something" 时,将触发这个方法。Debug.Log("Doing something...");}
}
9.[ContextMenuItem(string, string)]
用于在 Inspector 窗口中为字段或属性添加自定义上下文菜单项
你可以在自定义的字段上应用这个特性,以便在 Unity 编辑器的 Inspector 窗口中为它们添加自定义的上下文菜单项。这些菜单项可以在编辑时执行特定的操作
public class AttributeTest : MonoBehaviour
{[ContextMenuItem("Reset Score", "ResetScore")]public int playerScore;private void ResetScore(){playerScore = 0;}
}
在这个示例中,[ContextMenuItem(“Reset Score”, “ResetScore”)] 特性被应用于 playerScore 字段。
这将为 Inspector 中的 playerScore 字段创建一个上下文菜单项,当在该字段上右击时显示为 “Reset Score”。
当用户在 Inspector 中选择这个菜单项时,将触发 ResetScore 方法,这个方法将 playerScore 重置为 0。
10.[CreateAssetMenu()]
用于在 Unity 编辑器中为脚本创建自定义资源菜单项
这个特性允许你在 “Assets” 菜单下创建新的自定义资源,例如脚本的实例或配置文件。
你可以将 CreateAssetMenuAttribute 特性应用于你的自定义脚本类,以便在 Unity 编辑器中方便地创建新的资源实例。这对于生成自定义配置文件、材质、纹理等非常有用。
[CreateAssetMenu(fileName = "fileName1", menuName = "menu1/menu2")]
public class AttributeTest : ScriptableObject
{}

11.[Delayed]
直到用户按 Enter 键或将焦点字段移开后,该字段才会返回新值。
public class AttributeTest : MonoBehaviour
{[Delayed]public float delayedValue = 0.0f;void Update(){Debug.Log("Delayed Value: " + delayedValue);}
}

12.[DisallowMultipleComponent]
当你将此特性添加到一个脚本类上时,Unity 将确保在同一 GameObject 上只能添加一个该脚本类型的组件
[DisallowMultipleComponent]
public class AttributeTest : MonoBehaviour
{
}
重复添加有该特性的脚本组件失败
13.[ExecuteInEditMode]
ExecuteInEditMode 特性用于标记在 Unity 中的脚本类,以确保它们在编辑模式下也会执行,而不仅仅在播放模式下执行。这对于那些需要在编辑器中进行实时交互和编辑的脚本非常有用
[ExecuteInEditMode]
public class AttributeTest : MonoBehaviour
{public Vector3 somePosition;private void Update(){// 这里的代码将在编辑器模式下执行transform.position = somePosition;}
}
14.[HelpURL(string)]
为类提供自定义文档 URL,按Ctrl键点击可跳转到链接。
[HelpURL("https://docs.unity3d.com/cn/2020.3/ScriptReference/HelpURLAttribute.html")]
public class AttributeTest : MonoBehaviour
{
}

15.[HideInInspector]
HideInInspector用于将字段隐藏在 Inspector 窗口中,即使它们是公共字段
public class AttributeTest : MonoBehaviour
{public int publicField; // 这个字段将显示在 Inspector 窗口中[HideInInspector]public int hiddenField; // 这个字段将被隐藏,不会在 Inspector 中显示
}

16.[Multiline(int)]
用于标记一个字符串字段,告诉 Inspector 窗口该字段可以显示多行文本输入框。
public class AttributeTest : MonoBehaviour
{[Multiline(4)] // 将该字段标记为多行文本输入,显示 4 行文本输入框public string description;
}

17.[RequireComponent(Type)]
用于确保特定类型的组件在同一 GameObject 上一起存在,通常用于协助开发人员避免在 GameObject 上忘记添加必需的组件。
GameObject 上附加了该脚本类,但缺少指定的组件,Play模式下,Unity 将自动添加这些必需的组件,以确保 GameObject 具有正确的组件配置。
[RequireComponent(typeof(Rigidbody))]
public class AttributeTest : MonoBehaviour
{}

18.[RuntimeInitializeOnLoadMethod]
用于标记静态方法,在 Unity 运行时初始化时自动调用。
public class AttributeTest : MonoBehaviour
{[RuntimeInitializeOnLoadMethod]static void testInitializeOnLoad(){// 在游戏启动时执行的初始化逻辑Debug.Log("Game is starting, performing initialization...");}
}

19.[SerializeField]
当将该特性应用于一个字段或属性时,它将允许访问并编辑它,而不需要将字段标记为 public。
public class AttributeTest : MonoBehaviour
{[SerializeField]private int myField;
}

二.System命名空间
1.[Serializable]
用于标记脚本的自定义类,使它们可以在 Inspector 中显示并且可以序列化。
自定义类被标记为 SerializableAttribute,这意味着你可以在 Unity 的 Inspector 窗口中创建一个 PlayerSettings 类型的字段,然后设置其属性
public class AttributeTest : MonoBehaviour
{[Serializable]public class PlayerSettings{public string playerName;public int playerScore;public float playerHealth;}public PlayerSettings playerSettings;
}

2.[NonSerialized]
用于标记字段,以指示这些字段不应该被序列化,并且不会在Inspector面板上出现。
在 Unity 中,这通常用于在脚本中引用引用对象或在脚本中执行一些不希望在场景序列化时保存的操作。
public class AttributeTest : MonoBehaviour
{// 这个字段将不被序列化[NonSerialized]public int myInt;public float myFloat;
}

三.UnityEditor命名空间
1.[MenuItem(string]
用于在 Unity 编辑器的菜单栏中添加自定义菜单项。
这允许开发人员创建自定义的编辑器工具、快捷方式或功能,并将它们集成到 Unity 编辑器中,以提高工作效率。
MenuItem 特性能够将任何静态函数转变为菜单命令。仅静态函数可使用 MenuItem 特性。
public class AttributeTest : MonoBehaviour
{// Add a menu item named "Do Something" to MyMenu in the menu bar.[MenuItem("MyMenu/Do Something")]static void DoSomething(){Debug.Log("Doing Something...");}
}

2.[InitializeOnLoadMethod]
重新编译项目中的脚本时,会调用带有此特性的静态方法。
在 Unity 首次加载项目时、在 Unity 检测到脚本修改时,以及当进入运行模式时,会进行此调用.
public class AttributeTest : MonoBehaviour
{[InitializeOnLoadMethod]static void Initialize(){// 在指定的时刻执行初始化代码Debug.Log("Initialization method has been called12.");}
}

相关文章:
Unity常用特性(Attribute)用法
一.UnityEngine命名空间 1.[Header(string)] inspector面板上给显示的字段上加一个描述 通常情况下,用于在 Inspector 窗口中创建字段的逻辑分组 public class AttributeTest : MonoBehaviour {[Header("public_field_num")]public int num; }2.[Tool…...
VUE对接deepseekAPI调用
1.先去开放平台注册账号申请api key。开放平台:https://platform.deepseek.com/api_keys 2.你的项目需要有发送请求的axios或者自己写。 npm install axios # 或 yarn add axios 3.创建 API 调用函数 在 Vue 项目中,通常会将 API 调用的逻辑封装到一个…...
【Postman 接口测试】接口测试基础知识
在软件开发与测试领域,接口测试是保障软件质量的关键环节之一,而 Postman 作为一款功能强大且广泛使用的接口测试工具,能帮助我们高效地进行接口测试工作。下面,我们将详细介绍接口测试的基础知识,包括接口的认识、接口…...
谷粒商城——商品服务-三级分类
1.商品服务-三级分类 1.1三级分类介绍 1.2查询三级分类查询-递归树型结构数据获取 1.2.1导入数据pms_catelog.sql到数据表pms_category 1.2.2一次性查出所有分类及子分类 1.2.2.1修改CategoryController.java /*** 查出所有分类以及子分类,以树形结构组装起来*/R…...
视觉语言模型 (VLMs):跨模态智能的探索
文章目录 一. VLMs 的重要性与挑战:连接视觉与语言的桥梁 🌉二. VLMs 的核心训练范式:四种主流策略 🗺️1. 对比训练 (Contrastive Training):拉近正例,推远负例 ⚖️2. 掩码方法 (Masking):重构…...
HarmonyOS NEXT:华为分享-碰一碰开发分享
随着科技的不断进步,智能手机和智能设备之间的互联互通变得越来越重要。华为作为科技行业的领军企业,一直致力于为用户提供更加便捷、高效的使用体验。HarmonyOS NEXT系统的推出,特别是其中的“碰一碰”功能,为用户带来了前所未有…...
宝塔Linux+docker部署nginx出现403 Forbidden
本文主要讲述了宝塔docker部署nginx出现403 Forbidden的原因,以及成功部署前端的方法步骤。 目录 1、问题描述2、问题检测2.1 检测监听端口是否异常2.2 检测Docker容器是否异常2.2.1 打开宝塔Linux的软件商店,找到Docker管理器,查看前端容器是…...
软件测试丨Redis 的数据同步策略以及数据一致性保证
Redis 以其键值存储的方式,为开发者提供了数据快速存取的能力。它不仅支持丰富的数据结构,如字符串、哈希、列表、集合等,而且提供了高效的数据同步与一致性保障机制。正因为如此,Redis 被广泛应用于缓存、消息队列、实时数据分析…...
C语言-运算符
1. 按位与运算符(&) 按位与运算符对两个整数的每一位执行“与”操作。只有当两个相应位都为 1 时,结果才为 1 ;否则为 0。 // 示例 int a 5; // 二进制: 0101 int b 3; // 二进制: 0011 int result a & b; …...
困境如雾路难寻,心若清明步自轻---2024年创作回顾
文章目录 前言博客创作回顾第一次被催更第一次获得证书周榜几篇博客互动最多的最满意的引发思考的 写博契机 碎碎念时也运也部分经验 尾 前言 今年三月份,我已写下一篇《近一年多个人总结》,当时还没开始写博客。四月份写博后,就顺手将那篇总…...
表格标签基本使用
表格主要用于显示、展示数据,因为它可以让数据显示的非常的规整,可读性非常好。特别是后台展示数据的时候,能够熟练运用表格就显得很重要。一个清爽简约的表格能够把繁杂的教据表现得很有条理。 1.<table></table>是用于定义表格…...
【学术会议论文投稿】深度解码:机器学习与深度学习的界限与交融
目录 一、定义与起源:历史长河中的两条轨迹 二、原理差异:从浅层到深层的跨越 三、代码解析:实战中的机器学习与深度学习 机器学习示例:线性回归 深度学习示例:卷积神经网络(CNN) 四、应用差异:各自领…...
使用printmap()函数来打印地图
使用PrintMap()函数可以将地图布局发送到打印机.默认情况下,任务会发送到地图文档保存的默认打印机,但也可以通过自定义一个特定的打印机来执行打印任务 操作方法 1.打开目标地图 2.打开python窗口 3.导入arcpy.mapping模块 import arcpy.mapping as mapping 4.引用活动地…...
MyBatis Plus 的 InnerInterceptor:更轻量级的 SQL 拦截器
在 Spring Boot 项目中使用 MyBatis Plus 时,你可能会遇到 InnerInterceptor 这个概念。 InnerInterceptor 是 MyBatis Plus 提供的一种轻量级 SQL 拦截器,它与传统的 MyBatis 拦截器(Interceptor)有所不同,具有更简单…...
Java复习第四天
一、代码题 1.相同的树 (1)题目 给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p[1,2,3],q[1,2,3] 输出:true示例 2: 输…...
docker 安装 mysql 详解
在平常的开发工作中,我们经常需要用到 mysql 数据库。那么在docker容器中,应该怎么安装mysql数据库呢。简单来说,第一步:拉取镜像;第二步:创建挂载目录并设置 my.conf;第三步:启动容…...
本地Ubuntu轻松部署高效性能监控平台SigNoz与远程使用教程
文章目录 前言1.关于SigNoz2.本地部署SigNoz3.SigNoz简单使用4. 安装内网穿透5.配置SigNoz公网地址6. 配置固定公网地址 前言 本文介绍如何在Ubuntu系统上使用 Docker 快速部署一款强大的应用性能监控工具SigNoz,并结合cpolar内网穿透工具轻松实现异地远程使用。 …...
防火墙的会话并发数、端口数量及其关系
防火墙的会话并发数、端口数量及其关系: 会话并发数:会话并发数,也称为并发连接数,是指防火墙能够同时处理的点对点连接的最大数目。这个参数直接影响到防火墙在高流量环境下的表现,特别是对于需要处理大量并发…...
随机变量的变量替换——归一化流和直方图规定化的数学基础
变量替换是一种在统计学和数学中广泛应用的技术,它通过定义新的变量来简化问题,使得原本复杂的随机变量变得更加容易分析。 变量替换的公式,用于将一个随机变量 X X X 的概率密度函数 f X f_X fX 转换为其经过函数 g g g 变换后的随机变…...
Java春招面试指南前言
在当今竞争激烈的就业市场中,对于即将踏入职场的Java开发者而言,春招是一次宝贵的机会。本博客专栏旨在为大家提供一份全面且实用的Java春招面试指南,助力大家顺利通过面试,开启职业生涯的新篇章。 无论你是初出茅庐的应届生&…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...





