unity中的常用属性修饰符

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.mzph.cn/bicheng/19206.shtml

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

相关文章

MFC工控项目实例一主菜单制作

1、本项目用在WIN10下安装的vc6.0兼容版实现。创建项目名为SEAL_PRESSURE的MFC对话框。在项目res文件下添加相关256色ico格式图片。 2、项目名称:密封压力试验机 主菜单名称: 系统参数 SYS_DATA 系统测试 SYS_TEST 选择型号 TYP_CHOICE 开始试验 TES_STA…

sdbusplus:通过文件描述符传递数据

有的时候需要传递大量的数据,如果将数据通过dbus传递,会消耗大量的带宽。可以通过传递一个文件描述符替代传递数据: 以下的service通过文件描述符接收数据: //fd_service.cpp #include <sdbusplus/asio/connection.hpp> #include <sdbusplus/asio/object_server…

U盘无法打开?数据恢复与预防措施全解析

在日常生活和工作中&#xff0c;U盘已成为我们存储和传输数据的重要工具。然而&#xff0c;有时我们会遇到U盘无法打开的情况&#xff0c;这无疑给我们带来了诸多不便。本文将深入探讨U盘打不开的现象、原因及解决方案&#xff0c;并分享如何预防此类问题的发生。 一、U盘无法访…

Java实现对象存储的4种方式(本地对象存储、MINIO、阿里云OSS、FastDFS)

文章目录 Java实现对象存储的3中方式1、概述2、本地对象存储2.1 配置本地文件相关信息2.2 通用映射配置 ResourcesConfig2.3 文件上传业务 LocalSysFileServiceImpl2.4 上传接口2.5 演示 3、MINIO3.1 依赖3.2 配置3.3 配置连接信息3.4. MINIO文件上传业务3.5 文件上传下载接口3…

学生管理系统 面向对象

创建一个实例对象后 把实例对象添加到列表后 每次遍历列表 都能获得一个实例对象 然后就可以使用实例对象的属性和方法了 学生管理系统 面向对象 两个类 学生管理类 学生类 # 学生类 # 属性 姓名 电话 class Student:def __init__(self, name, phone):self.name nameself.phon…

各大翻译软件代码——浔川AI翻译研发社团

一、前言 有道翻译API&#xff08;主要推荐&#xff09; 百度翻译API&#xff08;需要申请key与密钥&#xff0c;每月100万免费字符&#xff09; 谷歌翻译API&#xff08;需要梯子&#xff0c;而且不稳定&#xff0c;不推荐&#xff09; 二、代码 1、有道翻译 def is_Chi…

高性价比、超强功能的开源工单解决方案

在企业日常运营中&#xff0c;工单管理系统是不可或缺的工具。高效的工单管理不仅能提升工作效率&#xff0c;还能显著提高客户满意度。今天&#xff0c;我们为您推荐搭贝工单派单系统——一款超高性价比、功能齐全的开源工单管理系统。 &#x1f50d; 为什么选择搭贝工单派单…

LangChain入门开发教程(一):Model I/O

官方文档&#xff1a;https://python.langchain.com/docs/get_started/introduction/ LangChain是一个能够利用大语言模型&#xff08;LLM&#xff0c;Large Language Model&#xff09;能力进行快速应用开发的框架&#xff1a; 高度抽象的组件&#xff0c;可以像搭积木一样&a…

Nginx R31 doc-17-debugging 调试

前言 大家好&#xff0c;我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的&#xff0c;可以参考我的另一个项目&#xff1a; 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …

【PB案例学习笔记】-13 徒手做个电子时钟

写在前面 这是PB案例学习笔记系列文章的第11篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

python基础-数据结构-leetcode刷题必看-queue---队列-python的底层构建

文章目录 队列双端队列 deque底层存储deque接口1. __init__(self, iterable: Iterable[_T], maxlen: int | None None) -> None2. append(self, __x: _T) -> None3. appendleft(self, __x: _T) -> None4. copy(self) -> Self5. count(self, __x: _T) -> int6. …

java项目启动报错

java项目启动报错&#xff1a;java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field ‘com.sun.tools.javac.tree.JCTree qualid’ 原因&#xff1a;编译和运行的版本不一样 点击idea文件 点击项目结构 把这两个版本…

软件架构设计属性之一:功能性属性浅析

引言 软件架构设计属性中的功能性属性是评估软件架构是否满足其预定功能需求的关键指标。功能性属性确保软件能够执行其设计中的任务&#xff0c;并提供所需的服务。以下是对软件架构设计中功能性属性的浅析&#xff1a; 一、定义 功能性属性是指软件系统所具备的功能特性&a…

解决Android studio 一直提示下载gradle-xxx-all.zip问题

今天用AndroidStdiod打开一个新工程的时候&#xff0c;发现项目一直卡在正在下载gradle-xxx-all.zip的任务上&#xff0c;网络出奇的慢&#xff0c;即使配了VPN也无济于事&#xff0c;于是按照以往经验&#xff1a;将gradle-xxx-all.zip下载到.gradle\gradle\wrapper\dists目录…

【ESP32之旅】ESP32 PlatformIO 固件单独烧录

背景 有时候使用PIO编写的代码需要发给客户去验证&#xff0c;相比较于发送源码直接发送bin文件&#xff0c;更加的安全而且高效。不用担心源码的泄漏&#xff0c;也不用帮客户配置PIO环境。 操作方法 1.编译 首先进行代码编译&#xff0c;如编译成功会在 .pio\build\airm2…

python之any用法

写法对比 代码一&#xff1a; any(i for i in [0,1]) 代码2&#xff1a; any([i for i in [0,1]]) 优劣 结论&#xff1a;代码一写法更好 解释&#xff1a; 在 Python 中&#xff0c;any() 函数可以接受一个可迭代对象作为参数&#xff0c;并返回 True 如果可迭代对象…

详解 Java 泛型:核心概念与实用示例

详解 Java 泛型&#xff1a;核心概念与实用示例 Java 泛型&#xff08;Generics&#xff09;是Java SE 5引入的一项特性&#xff0c;旨在提高代码的可重用性和类型安全性。通过泛型&#xff0c;开发者可以编写一个通用的类、接口或方法&#xff0c;可以与多种类型一起工作&…

汽车电子学习【车载网络CAN/LIN】

车载网络CAN/LIN知识总结 STM32F1开发板测试 STM32测试程序 /** CAN 通信报文内容设置*/ void CAN_SetMsg(void) { #if CAN_STDTxMessage.StdId 0x12;TxMessage.IDE CAN_ID_STD; #elseTxMessage.ExtId 0x1314; //使用的扩展IDTxMessage.IDE CAN_ID_EXT; //扩展模式 #…

C++进程间通信 消息队列

C进程间通信 消息队列 消息队列概述消息队列代码示例1. 创建和发送消息的程序&#xff08;sender.cpp&#xff09;2. 接收消息的程序&#xff08;receiver.cpp&#xff09; 代码解释运行步骤运行结果 消息队列概述 消息队列是一种进程间通信机制&#xff0c;允许一个或多个进程…

Django 做migrations时出错,解决方案

在做migrations的时候&#xff0c;偶尔会出现出错。 在已有数据的表中新增字段时&#xff0c;会弹出下面的信息 运行这个命令时 python manage.py makemigrationsTracking file by folder pattern: migrations It is impossible to add a non-nullable field ‘example’ to …