当前位置: 首页 > 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将事…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

大数据治理的常见方式

大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法&#xff0c;以下是几种常见的治理方式&#xff1a; 1. 数据质量管理 核心方法&#xff1a; 数据校验&#xff1a;建立数据校验规则&#xff08;格式、范围、一致性等&#xff09;数据清洗&…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》

近日&#xff0c;嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》&#xff0c;海云安高敏捷信创白盒&#xff08;SCAP&#xff09;成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天&#xff0c;网络安全已成为企业生存与发展的核心基石&#xff0c;为了解…...