unity中的常用属性修饰符

news2024/10/6 10:42:13

unity中的常用属性修饰符

  • 一、前言
  • 二、常用修饰符
  • 三、结语

一、前言

在做unity开发编辑脚本的时候经常会用到属性修饰符,使开发调试更加便捷。初学者见过最多的莫过于[Header("标题文本")]了吧,除此之外其实还有很多,这篇文章列举说明一些开发常用属性修饰符。

请添加图片描述

二、常用修饰符

在Unity中,属性修饰符可以用于控制序列化行为、编辑器显示和其他功能。以下是一些常用的Unity属性修饰符及其含义:

  1. [HideInInspector]
    此属性修饰符可以隐藏一个字段或属性,使其在Inspector窗口中不可见。
    在这里插入图片描述

  2. [Range(min, max)]
    限制一个数值字段或属性的可接受值范围。在Inspector中,这个字段会显示为一个滑动条或输入字段,限制在指定的最小值和最大值之间。
    在这里插入图片描述

  3. [Tooltip("提示文本")]
    为Inspector中的字段或属性添加工具提示。当用户将鼠标悬停在字段上时,会显示提示文本。
    在这里插入图片描述

  4. [Multiline(n)]
    将字符串字段或属性在Inspector中显示为多行文本区域。可以指定行数,例如[Multiline(3)]将显示一个3行的文本区域。
    在这里插入图片描述

  5. [ SerializeField ]
    使私有或受保护的字段在Inspector中可见和可序列化。
    在这里插入图片描述

  6. [Header("标题文本")]
    在Inspector中添加一个标题,用于分隔和组织字段。
    在这里插入图片描述

  7. [Space]
    在Inspector中添加一些空间,用于分隔字段,也可以[Space(50)]分隔的更远。
    在这里插入图片描述

  8. [ContextMenuItem("菜单项文本", "方法名")]
    在Inspector中的字段旁边添加一个上下文菜单项,当点击时,会调用指定方法。
    在这里插入图片描述

  9. [TextArea(3, 10)]
    [Multiline]类似,但它还允许指定文本区域的最小和最大行数。超过最大行数,会出现滚动条,但[Multiline]不会出现。
    在这里插入图片描述

  10. [HelpURL("URL")]
    为脚本添加一个帮助链接,点击时会在浏览器中打开指定的URL。
    这些属性修饰符可以在Unity编辑器中提供更好的用户体验,并帮助组织和管理脚本中的数据。
    只修饰类,一般会默认跳转手册文档
    在这里插入图片描述

  11. [ContextMenu ("名称")]
    在Inspector面板中脚本Script的上下文菜单中添加一条指令,当点击该指令时,执行对应函数。需要注意的是修饰符只能用于非静态函数。
    在这里插入图片描述

  12. [CreateAssetMenu(fileName = "xxxx",menuName = "xxx/xxx")]
    参数说明:fileName:生成asset文件的文件名;menuName:在Assets/Create上子菜单的名字。

    这个修饰符可以通过编辑器创建自定义资产。通常用于那些继承自ScriptableObject的类,它可以让开发者轻松地创建和管理配置文件、数据容器或其他可序列化的资源。
    在这里插入图片描述

  13. [ColorUsage(bool, bool, float, float, float, float)]
    在Unity中,[ColorUsage]属性用于指定一个Color类型的字段如何在编辑器中显示和编辑。这个属性允许你限制颜色的编辑范围,例如,可以指定最小的亮度、饱和度或者Alpha值。这对于那些需要特定颜色范围的应用场景非常有用,比如光照颜色、材质颜色等。
    在这里插入图片描述
    第一个参数true表示是否允许HDR(高动态范围)颜色。
    第二个参数true表示是否允许颜色选择器显示Alpha通道。
    第三个参数0f是颜色的最小亮度值。
    第四个参数8f是颜色的最大亮度值。
    第五个参数0.1f是颜色的最小饱和度值。
    第六个参数3f是颜色的最大饱和度值。

  14. [AddComponentMenu("xxx/xxx")]
    该属性是一个用于自定义脚本的特性,它允许你为脚本定义一个自定义的菜单路径,以便在编辑器中通过Add Component菜单添加该组件时能够找到它。这个特性对于组织复杂的工程或者为非程序员用户提供易于理解的组件非常有用。
    在这里插入图片描述

  15. [DisallowMultipleComponent]
    防止在同一GameObject上添加同一组件的多个实例。
    在这里插入图片描述


下面是一些不是很常见的,但是也要了解知道。

  1. [Delayed]
    当应用于属性时,延迟更新属性值,直到用户完成输入。这通常用于那些需要用户输入但不需要即时反映的场合,比如在Inspector中输入一个值后,不需要立即看到结果,而是等到用户完成所有输入后再更新。

    在这里插入图片描述
    比如在这段脚本中,health字段在Inspector中会有一个延迟更新的行为。当你开始在Inspector中编辑health的值时,Unity不会立即应用这个新值,而是等到你完成输入(比如按下回车键或点击其他字段)后才会更新。

    这个特性对于防止在用户输入过程中频繁触发的事件或计算非常有用。例如,如果你有一个复杂的计算依赖于health的值,你不想在用户每输入一个数字时就执行这个计算,而是等到用户输入完整个数值后再执行。

  2. [ExecuteInEditMode]
    允许脚本在编辑模式下运行,而不仅仅是播放模式。

  3. [FormerlySerializedAs("旧字段名")]
    当字段名称更改时,用于保持序列化数据的兼容性。

  4. [PropertyDrawer(typeof(MyPropertyDrawer))]
    自定义字段在Inspector中的显示方式,通过指定一个实现了PropertyDrawer类的类型。

  5. [RequireComponent(typeof(ComponentType))]
    自动将指定的组件添加到GameObject上,如果它尚未存在。

三、结语

虽然上面列举了不少属性修饰符,但是还有许多修饰符,只不过我们在开发的时候很少用到。我记得有个老师在教我的时候说过这样一句话:没有哪个程序员可以全部背会记住文档,只要能够找到会用就行,不要求全部背会记住。 是啊,文档手册里的东西千千万,怎么可能把全部的东西信手拈来,熟练使用查找手册也是一种能力。

今天的文章内容到此结束,下期见,拜拜!

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1714167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「异步魔法:Python数据库交互的革命」(二)

哈喽,我是阿佑,上篇文章带领了大家跨入的异步魔法的大门——Python数据库交互,一场魔法与技术的奇幻之旅! 从基础概念到DB-API,再到ORM的高级魔法,我们一步步揭开了数据库操作的神秘面纱。SQLAlchemy和Djan…

[Linux系统编程] 静态库与动态库

一.库的概念 库是写好的现有的,成熟的,可以复用的代码。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。…

[leetcode hot 150]第一百九十一题,位1的个数

题目: 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中设置位的个数(也被称为汉明重量)。 这道题比较简单,直接对最后一位进行与1的与操作,然…

JVM之垃圾判断的详细解析

垃圾判断 垃圾介绍 垃圾:如果一个或多个对象没有任何的引用指向它了,那么这个对象现在就是垃圾 作用:释放没用的对象,清除内存里的记录碎片,碎片整理将所占用的堆内存移到堆的一端,以便 JVM 将整理出的内…

microk8s 报错tls: failed to verify certificate: x509:

问题: ssh命令出现如下图所示 输入任何microk8s的容器命令几乎都是x509报错 kubectl get pods -ALL 原因: 证书过期 相关文档: MicroK8s - 服务和端口 Microk8S v1.24 - refresh-certs 似乎无法刷新证书 问题 #3241 规范/microk8s Git…

Mybatis进阶——动态SQL(1)

目录 一、 <if> 标签 二、<trim> 标签 三、<where> 标签 四、<set> 标签 五、<foreach> 标签 六、<include> 标签 动态SQL 是Mybatis的强大特性之一&#xff0c;能够完成不同条件下的不同SQL拼接&#xff0c;可以参考官方文档&#…

端到端目标检测 |从DETR 到 GroundingDINO

文章目录 一&#xff0c;DETR1. 简介2. 亮点3. 细节4. 总结一下 二&#xff0c;GroundingDINOGrounding DINO的整体流程Grounding DINO的目标函数 一&#xff0c;DETR 之前的目标检测框架&#xff0c;需要很多的人工干预&#xff0c;很多的先验知识&#xff0c;而且可能还需要…

AppInventor2 表格布局的外面的黑框怎么去掉?

问&#xff1a;表格布局的外面的黑框怎么去掉啊&#xff1f; 答&#xff1a;这个黑框是界面设计的布局位置示意&#xff0c;实际 App 测试时并没有框。 来源&#xff1a;AppInventor2 表格布局的外面的黑框怎么去掉&#xff1f; - App应用开发 - 清泛IT社区&#xff0c;为创新…

SQL查询电商数据案例

包括&#xff0c;Python连接数据库到模拟电商数据库&#xff0c;到sql场景查询 1,Python连接SQL数据库 以下是使用Python连接MySQL数据库并进行操作的示例代码&#xff1a; import random import time import pymysql# 定义名字数据 xing ["王", "李",…

uni-app学习完结

昨天空余一天&#xff0c;并未写记录&#xff0c;是昨天属于项目完结&#xff0c;这里把最后的打包上线等这里说下。 打包成微信小程序 打包成微信小程序&#xff0c;这需要再微信公众平台里面&#xff0c;进行登陆和设置。这里说下&#xff0c;注册的后&#xff0c;选择需要…

文心智能体平台丨创建你的四六级学习小助手

引言 在人工智能飞速发展的今天&#xff0c;我们迎来了文心智能体平台。该平台集成了最先进的人工智能技术&#xff0c;旨在为用户提供个性化、高效的学习辅助服务。今天&#xff0c;我们将向大家介绍如何利用文心智能体平台&#xff0c;创建一个专属于你的四六级学习小助手。…

zabbix客户端启用ping脚本 , 采集结果返回服务端

1.Zabbix-agent配置 (1) 查看自定义配置的目录位置 # more /etc/zabbix/zabbix_agentd.conf (2) 将配置的脚本放在指定的目录下 # cd /etc/zabbix/zabbix_agentd.d # vi get_ping.conf UserParameter=get_ping[*], /bin/ping -c 1 -W 1 $1 &> /dev/null &a…

未在计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序和未在本地计算机上注册“microsoft.ACE.OLEDB.12.0”提供程序

程序运行出现下图的错误&#xff0c; 或者下图的错误&#xff0c; 首先看一下是不是运行的程序的位数&#xff08;32/64&#xff09;不对&#xff1b; 查看系统位数的方法如下图&#xff1b;下图显示是64位操作系统&#xff1b; 如果运行的程序的位数没有问题&#xff1b; 则需…

MySQL-innodb后台线程

文章目录 一、结构图二、后台线程①Master Thread②IO Thread③Purge Thread④Page Cleaner Thread 拓展知识 一、结构图 二、后台线程 InnoDB是多线程的模型&#xff0c;因此其后台有多个不同的后台线程&#xff0c;负责处理不同的任务 后台线程有&#xff1a; ①Master Thr…

BevDet(1): 算法原理介绍介绍

BevDet是一个LSS-Based的实时高性能的多相机3D检测模型,它用4阶段的范式去做3D目标检测,设计上同时支持Segmentation。何谓4阶段范式: 1.图像域的特征提取(Image -view Encoder)2.视角转换 (View Transformer)3.Bev空间特征提取(BEV Encoder)4.任务头Head它涉及 Image View …

【ai】livekit:Agents 3 : pythonsdk和livekit-agent的可编辑模式下的安装

livekit-agent 依赖于livekit、livekit-api、livekit-protocol 其中livekit就是livekkit-rtc: 包含俩sdk 实时互动sdkReal-time SDK for connecting to LiveKit as a participant livekit-api : 服务端sdk https://pypi.org/project/livekit-api/ livekit的python sdk

Plesk面板上网站无法访问如何查看日志

近期我的网站出现无法访问的问题&#xff0c;这边想要查询为什么出现无法访问的原因&#xff0c;但不知道如何在主机上面进行检查&#xff0c;由于我使用的Hostease的Windows虚拟主机产品默认带普通用户权限的Plesk面板&#xff0c;因此联系Hostease的咨询了Hostease技术支持&a…

嵌入式不一定只能用C!

嵌入式不一定只能用C! ---------------------------------------------------------------------------------------手动分割线-------------------------------------------------------------------------------- 本文章参考了以下文章&#xff1a; 这里是引用 ------------…

算法与数据结构高手养成:朴素的贪心法(上)最优化策略

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Linux离线一键安装Docker及docker-compose环境

背景&#xff1a; 在当前软件部署运维环境中由于Docker容器化优势越来越明显&#xff0c;因些被许多公司运维所采用&#xff0c;那首先如何快速安装Docker及docker-compose基础环境就第一时间被人们关注&#xff0c;本人同样在经过多次手工逐条用命令安装的过程&#xff0c;整理…