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春招面试指南,助力大家顺利通过面试,开启职业生涯的新篇章。 无论你是初出茅庐的应届生&…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...

门静脉高压——表现
一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...