当前位置: 首页 > news >正文

特性Attribute

本文只提及常用的特性,更多特性请查看官方文档。

AddComponentMenu - Unity 脚本 API

常用特性

AddComponentMenu 添加组件菜单

使用 AddComponentMenu 属性可在“Component”菜单中的任意位置放置脚本,而不仅是“Component > Scripts”菜单。

使用此属性可以更好地组织 Component 菜单,从而改进添加脚本时的工作流程。

[AddComponentMenu("Transform/Follow Transform")]
public class FollowTransform : MonoBehaviour
{
}

ContextMenu 向上下文菜单添加命令

ContextMenu 属性用于向上下文菜单添加命令。

在该附加脚本的 Inspector 中,当用户选择该上下文菜单时, 将执行此函数。

这对于从该脚本自动设置场景数据非常有用。 此函数必须是非静态的。

public class AttributeTest : MonoBehaviour
{[ContextMenu("Do Something")]void DoSomething(){Debug.Log("Perform operation");}
}

ContextMenuItemAttribute

当点击Reset后,会调用ResetDesc方法,重置变量的值。即往已经存在的上下文菜单中,添加自己的方法。

    [ContextMenuItem("Reset", "ResetDesc")]public string playerDesc = "";public int money = 0;void ResetDesc(){playerDesc = "";money = 0;}

CreateAssetMenuAttribute 创建资源菜单

对 ScriptableObject 派生类型进行标记,使其自动列在 Assets/Create 子菜单中,以便能够轻松创建该类型的实例并将其作为“.asset”文件存储在项目中。

[CreateAssetMenu(fileName = "ScriptableObjectTest.asset", menuName = "ScriptableObject/ScriptableObjectTest")]
public class ScriptableObjectTest : ScriptableObject
{public string desc = "这是个ScriptableObject";
}

HeaderAttribute 添加标题

使用该 PropertyAttribute 在 Inspector 中的某些字段上方添加标题。

标题使用 DecoratorDrawer 完成。

    [Header("Health Settings")]public int health = 0;

HideInInspector 隐藏于面板

使变量不显示在 Inspector 中,但进行序列化。public变量默认会显示在Inspector界面中的,加上这个标签,就不会显示。

InspectorNameAttribute 修改面板显示的名称

对枚举值声明使用此属性可更改 Inspector 中显示的名称。

public class AttributeTest : MonoBehaviour
{public ModelImporterIndexFormat f;
}public enum ModelImporterIndexFormat
{Auto = 0,[InspectorName("16 bits")]UInt16 = 1,[InspectorName("32 bits")]UInt32 = 2,
}

MinAttribute 最小值限制

用于使脚本中的 float 或 int 变量受限于特定最小值的属性。

MultilineAttribute 多行文本

用于string类型,可以编辑多行文本。

PropertyAttribute 自定义属性特性

用于派生自定义属性特性的基类。这可用于为脚本变量创建特性。

自定义特性可以与自定义 PropertyDrawer 类连接,以控制具有该特性的脚本变量如何在 Inspector 中显示。

RangeAttribute 值的范围限制

用于使脚本中的 float 或 int 变量受限于特定范围的属性。

使用此属性时,float 或 int 会在 Inspector 中显示滑动条。

    [Range(1, 6)]public int integerRange;[Range(0.2f, 0.8f)]public float floatRange;

RequireComponent 所需组件

RequireComponent 属性自动将所需的组件添加为依赖项。

当您将使用RequireComponent的脚本添加到GameObject时,所需组件将自动添加到GameObject。这有助于避免设置错误。例如,一个脚本可能要求一个刚体总是被添加到同一个GameObject中。

// PlayerScript requires the GameObject to have a Rigidbody component
[RequireComponent(typeof(Rigidbody))]
public class PlayerScript : MonoBehaviour
{Rigidbody rb;void Start(){rb = GetComponent<Rigidbody>();}void FixedUpdate(){rb.AddForce(Vector3.up);}
}

SerializeField 序列化私有字段

强制 Unity 对私有字段进行序列化。

当 Unity 对脚本进行序列化时,仅对公共字段进行序列化。 如果还需要 Unity 对私有字段进行序列化, 可以将 SerializeField 属性添加到这些字段。

Unity 将对所有脚本组件进行序列化,重新加载新程序集, 并从序列化的版本重新创建脚本组件。此 序列化是通过 Unity 内部序列化系统完成的;而不是通过 .NET 的序列化功能来完成。

序列化系统可执行以下操作: 可序列化(可序列化类型的)公共非静态字段 可序列化标记有 SerializeField 属性的非公共非静态字段。 不能序列化静态字段。 不能序列化属性。 可序列化的类型

Unity 可序列化以下类型的字段: 继承 UnityEngine.Object 的所有类,例如 GameObject、Component、MonoBehaviour、Texture2D、AnimationClip。 所有基本数据类型,例如 int、string、float、bool。 某些内置类型,例如 Vector2、Vector3、Vector4、Quaternion、Matrix4x4、Color、Rect、LayerMask。 可序列化类型数组 可序列化类型列表 枚举 结构 有关序列化的更多信息,请参阅脚本序列化。

注意:如果在一个列表(或数组)中将一个元素放置两次,当此 列表被序列化时,将获得该元素的两个副本,而不是获得两次新列表中的一个副本。

注意:如果要序列化自定义 Struct 字段,则必须为该 Struct 给定 [System.Serializable] 属性。

提示:Unity 不会序列化 Dictionary,但您可以为键存储一个 List<> 和为值存储一个 List<>,然后在 Awake() 上将它们组合在非序列化字典中。这不能解决您需要修改字典 并将其“保存”回时出现的问题,但在许多其他情况下,这是一个方便的技巧。

    [SerializeField]private bool hasHealthPotion = true;

SpaceAttribute 间距

可在 Inspector 中添加一些间距

    public int health = 0;[Space(10)] // 10 pixels of spacing here.public int shield = 0;

TextAreaAttribute 可滚动的区域编辑字符串

属性,用于通过高度灵活且可滚动的区域编辑字符串。

您可以指定 TextArea 的最小行数和最大行数,该字段将根据文本的大小进行扩展。如果文本大于可用区域,则会显示滚动条。

    [TextArea]public string MyTextArea;

TooltipAttribute 工具提示

为 Inspector 窗口中的字段指定工具提示。

 下面的脚本中添加了一个 health。它向用户提供有关 health 变量的值的范围信息。建议的范围在 TooltipAttribute 字符串中提供。

    [Tooltip("Health value between 0 and 100.")]public int health = 0;

自定义特性,PropertyAttribute与  PropertyDrawer 

相关文章:

特性Attribute

本文只提及常用的特性&#xff0c;更多特性请查看官方文档。 AddComponentMenu - Unity 脚本 API 常用特性 AddComponentMenu 添加组件菜单 使用 AddComponentMenu 属性可在“Component”菜单中的任意位置放置脚本&#xff0c;而不仅是“Component > Scripts”菜单。 使用…...

pyqt5, 如何在窗口上显示10个点地循环进度条。

要在PyQt5窗口上显示从1个点逐渐增加到10个点&#xff0c;然后周而复始地循环&#xff0c;可以使用PyQt5的图形绘制功能和定时器来实现。以下是一个简单的例子&#xff1a; import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QPainter, …...

VM里ubuntu虚拟无法启动

开始认为是VM的设置问题&#xff0c;按照这个链接关闭的3d加速图像显示&#xff0c;以及那个cmd命令&#xff0c;但是没什么用。 后来看到一篇博文和我的错误一模一样&#xff0c;都是只有一个光标在闪。于是按照这个操作进行了一遍&#xff0c;发现是home文件满了&#xff0c…...

信息学奥赛一本通——1156:求π的值

文章目录 题目【题目描述】【输入】【输出】【输入样例】【输出样例】 AC代码 题目 【题目描述】 根据公式&#xff1a; a r c t a n x ( x ) x − x 3 3 x 5 5 − x 7 7 ⋯ arctanx\left ( x \right ) x- \frac{x^3}{3} \frac{x^5}{5}-\frac{x^7}{7} \cdots arctanx(x…...

BI报表工具有哪些作用?奥威BI全面剖析数据

BI报表工具有哪些作用&#xff1f;主要的作用是通过整合多业务来源数据&#xff0c;全面分析挖掘数据&#xff0c;来帮助企业实现数据化运营、支持智能决策、实现数据资产沉淀和增值、进行数据挖掘和预测分析、提高数据可读性和数据可视化程度等&#xff0c;从而提高企业的竞争…...

【云原生K8s】初识Kubernetes的理论基础

K8S由google的Borg系统(博格系统&#xff0c;google内部使用的大规模容器编排工具)作为原型&#xff0c;后经GO语言延用Borg的思路重写并捐献给CNCF基金会开源。 云原生基金会&#xff08;CNCF&#xff09;于2015年12月成立&#xff0c;隶属于Linux基金会。CNCF孵化的第一个项目…...

javaAPI(三):jdk8之前的日期API

jdk 8之前的日期时间API 1、System类中currentTimeMillis()。 2、 java.util.Date和子类java.sql.Date。 3、SimpleDateFormat 4、Calendar System返回时间戳 long time System.currentTimeMillis();System.out.println(time);Date类 java.util.Date类 实例化 构造器一&a…...

驱动开发(中断)

头文件&#xff1a; #ifndef __LED_H__ #define __LED_H__#define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014 #define PHY_LED1_RCC 0X50000A28#define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014 #define PHY_LED2_RCC 0X50000A28#def…...

TypeScript最新语法总结

注意注意&#xff01;&#xff01;&#xff01;本文介绍的是最新的TypeScript4的重要语法 第一部分&#xff1a;TypeScript的简介 TypeScript 是由微软开发的一款开源的编程语言&#xff0c;TypeScript 是 Javascript 的超集&#xff0c;遵循最新的 ES6、ES5 规范&#xff0c…...

sentinel组件

目录 定义 4.加SentinelResource,blockHander是超过阈值之后执行的函数 5.设置阈值 6.springboot集成sentinel 定义 1.sentinel知道当前流量大小&#xff0c;在浏览器和后端之间加sentinel控制流量&#xff0c;避免大批量的瞬时请求都达到服务上&#xff0c;将服务压垮 2.…...

26 MFC序列化函数

文章目录 Serialize对于存储文件的序列化 Serialize Serialize 是一个在 MFC (Microsoft Foundation Classes) 中常用的函数或概念。它用于将对象的数据进行序列化和反序列化&#xff0c;便于在不同的场景中保存、传输和恢复对象的状态。 在 MFC 中&#xff0c;Serialize 函数…...

GC 深入(小白,对gc有一个进一步的了解)

垃圾回收器的搭配 一般固定 一般这年轻代垃圾回收器&#xff0c;老年代垃圾回收器&#xff0c;如上图搭配着使用 1.8呢默认就是最后边那哥俩 jvm调优 一个就是增加吞吐量 一个就是减少STW的时间。 三色标记算法&#xff08;理解根可达算法&#xff09; 并发的可达性分析 有…...

CSS前端面试

文章目录 rem、em、vh、px各自代表的含义&#xff1f;盒模型poison 定位属性flex属性让元素水平垂直居中页面适配的方法有哪些 rem、em、vh、px各自代表的含义&#xff1f; px&#xff1a;绝对单位&#xff0c;页面按精确像素展示 em&#xff1a;相对单位&#xff0c;基准点为…...

VB+SQL餐饮管理系统设计与实现

第一章 前言 1.1 绪论 当今世界已进入了在计算机信息管理领域中激烈竞争的时代,应用计算机已经变得十分普遍了,如同我们离不开的自行车、汽车一样。我们应该承认,谁掌握的知识多,信息量大,信息处理速度快,批量大,谁的效率就高,谁就能够在各种竞争中立于不败之地。随着…...

React入门学习笔记2

jsx语法规则 定义虚拟DOM时&#xff0c;不要写引号。标签中混入JS表达式时要用{ }。样式的类名指定不要用class&#xff0c;要用className。内联样式&#xff0c;要用style{{key&#xff1a;value}}的形式去写。只有一个根标签标签必须闭合标签首字母 )若小写字母开头&#xf…...

Palo Alto Networks® PA-220R 下一代防火墙 确保恶劣工况下的网络安全

一、主要安全功能 1、每时每刻在各端口对全部应用进行分类 • 将 App-ID 用于工业协议和应用&#xff0c;例如 Modbus、 DNP3、IEC 60870-5-104、Siemens S7、OSIsoft PI 等。 • 不论采用何种端口、SSL/SSH 加密或者其他规避技术&#xff0c;都会识别应用。 • 使用…...

架构训练营学习笔记:5-2 负载均衡架构

多级负载架构 设计关键点 性能需求、维护复杂度之间做取舍。 一可以去掉F5、LVS &#xff1a; F5 是成本较高&#xff0c;LVS 是复杂&#xff0c;对于性能没那么高需求&#xff0c;可以去掉。 二 去掉ng: 服务网关服务 适应于初创公司快速验证&#xff0c;内部的 小系统…...

二叉树的性质、前中后序遍历【详细】

1. 树概念2.二叉树的概念1.2二叉树的性质 3.二叉树遍历3.2前序遍历3.2 中序遍历3.3 后序遍历 1. 树概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合&#xff0c;有二叉树&#xff0c;N叉树等等。 子树…...

涨姿势了,有意思的气泡 Loading 效果

今日&#xff0c;群友提问&#xff0c;如何实现这么一个 Loading 效果&#xff1a; 这个确实有点意思&#xff0c;但是这是 CSS 能够完成的&#xff1f; 没错&#xff0c;这个效果中的核心气泡效果&#xff0c;其实借助 CSS 中的滤镜&#xff0c;能够比较轻松的实现&#xff0…...

单片机中断系统

单片机中断系统 中断的概念&#xff1a; CPU在处理某一事件A时&#xff0c;发生了另一事件B请求CPU迅速去处理&#xff08;中断发生&#xff09;&#xff1b;CPU暂时中断当前的工作&#xff0c;转去处理事件B&#xff08;中断响应和中断服务&#xff09;&#xff1b;待CPU将事…...

提示词失效?图像模糊?边缘锯齿?,深度拆解Midjourney毛玻璃效果的3大渲染瓶颈与实时修复路径

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Midjourney毛玻璃效果的本质与视觉语义定位 毛玻璃效果&#xff08;Frosted Glass Effect&#xff09;在 Midjourney 中并非原生支持的渲染模式&#xff0c;而是用户通过提示词工程、风格化参数与后期语义引导…...

Diablo Edit2完全指南:掌握暗黑破坏神2存档编辑的艺术

Diablo Edit2完全指南&#xff1a;掌握暗黑破坏神2存档编辑的艺术 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾经在暗黑破坏神2中因为技能点分配失误而懊恼&#xff1f;是否因为刷不到…...

Files.md:打造私密思考空间,兼具简洁实用与多样同步功能!

Files.md&#xff1a;专注思考的私密空间Files.md 是一款简洁的 .md 文件应用&#xff0c;为用户打造一个私密、安静的思考空间。用户可以用它存储生活中的一切&#xff0c;如笔记、文档、项目、日记、习惯记录、待办清单和任务等&#xff0c;所有内容都以纯 .md 文件形式保存&…...

9大网盘直链下载助手:告别限速,免费实现高速下载自由

9大网盘直链下载助手&#xff1a;告别限速&#xff0c;免费实现高速下载自由 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云…...

Wireshark实战:从流量包里‘捞出’图片和压缩包的两种方法(附CTF解题步骤)

Wireshark实战&#xff1a;从流量包里‘捞出’图片和压缩包的两种方法&#xff08;附CTF解题步骤&#xff09; 在网络安全和数字取证领域&#xff0c;网络流量分析是一项基础但至关重要的技能。想象一下这样的场景&#xff1a;你正在调查一起数据泄露事件&#xff0c;或者参加…...

用一台旧笔记本和朋友联机玩《我的世界》Fear Nightfall整合包,保姆级开服教程(含SakuraFrp配置)

用旧笔记本搭建《我的世界》Fear Nightfall联机服务器的完整指南 1. 为什么选择旧笔记本作为服务器主机&#xff1f; 对于许多《我的世界》玩家来说&#xff0c;和朋友一起体验大型整合包是件令人兴奋的事&#xff0c;但租用云服务器的高昂成本往往让人望而却步。实际上&…...

告别闪烁!用STM32CubeMX快速配置PWM+DMA驱动WS2812彩灯(F4系列实测)

告别闪烁&#xff01;用STM32CubeMX快速配置PWMDMA驱动WS2812彩灯&#xff08;F4系列实测&#xff09; 在嵌入式开发中&#xff0c;驱动WS2812彩灯往往需要精确的时序控制&#xff0c;传统软件延时方式不仅占用CPU资源&#xff0c;还容易因中断干扰导致灯光闪烁。本文将展示如何…...

法学论文降AI工具免费推荐:2026年法学毕业论文知网AIGC超标4.8元一次过完整方案

法学论文降AI工具免费推荐&#xff1a;2026年法学毕业论文知网AIGC超标4.8元一次过完整方案 论文AI率超标这件事&#xff0c;选错工具比不选工具更耽误事。 综合试用和口碑&#xff0c;法学论文降AI我主推嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;&#xff0c;4.8…...

【职场】为什么越努力的人,在职场死得越惨?

为什么越努力的人&#xff0c;在职场死得越惨&#xff1f; ——没有人告诉你&#xff0c;努力本身是一种暴露。一、先说一个你亲眼见过&#xff0c;但从没想明白的现象 你身边一定有这样的人&#xff1a; 工作最拼的那个&#xff0c;最后被裁了。 加班最多的那个&#xff0c;升…...

ESP32-C3 I²S实战:手把手教你驱动ES8311音频编解码器实现回声消除

ESP32-C3与ES8311音频系统实战&#xff1a;从硬件连接到回声消除算法优化 在智能语音交互设备、会议系统和便携式录音设备中&#xff0c;音频处理能力已成为核心需求。ESP32-C3作为一款高性价比的Wi-Fi/BLE双模芯片&#xff0c;其内置的IS接口为音频应用提供了专业级数字音频传…...