Unity3D笔记——常用语言标签属性 (Attribute)——上

unity 各类【】标签的使用 本文仅供学习记录,如有任何侵权行为立即删除! Inspector的扩展 ※ ※ ※ [Header] 标头属性 在代码中声明: [Header("名称")] public string roleName;//人名 public string desc;//人物介绍 [Header("角色属性")] public float hp;//血量 publ... 阅读详情

前言:Unity3D笔记是我平时做一些好玩的测试和研究,记录的笔记。会比较详细也可能随口一提就过了。 所以大家见谅了,内容一般都会是原创的(非原创我会注明转载)。由于很多内容其他的朋友也肯定研究发表过,大家用于指出错误。

一.[HideInInspector] :解析是就会将inspector中的对应的调整框隐藏

比如:原本声明一个字段:当用是public时,unity的自动会在inspector显示该变量。还会有一个修改框
public int showInt = 0;

这里写图片描述

这样很方便可以管理一些变量,但是呢:比如有一些变量,咱们需要把它公开(比如别的类需要用到),但是又不想在inspector显示怎么办?
那么[HideInInspector]很好的解决了这个问题:
下面的代码:showInt和hideInt 两个变量都是Public公开的,但是hideInt用[HideInInspector]修饰了。

public int showInt = 0;
[HideInInspector]
public int hideInt = 1;

结果:没错还是这个。 但是发现hideInt是被隐藏的。
hideInt被隐藏了

一般来说:Public的变量。不添加[HideInInspector]默认会在inspector窗口中生成调整窗口。需要隐藏,则在Public修饰前加[HideInInspector]即可。

二.[header]: inspector中显示对应变量的名字或者介绍

有这么个例子:程序猿甲写了个方便的工具给程序猿B用;由于工具很灵活,需要程序猿B自己设置参数,其中呢有个脚本是这样的:
这里写图片描述

额~ 程序猿B疯了: 你写的是什么鬼啊 ,让我怎么设置!
程序猿A:这不是很清楚么?
程序猿B:????

这样时候如果程序猿A ,在变量上加这么个标签:[header];

[Header("敌人标准速度")]
public float speed;
[Header("玩家移动速度")]
public float moveSpeed;
[Header("玩家角速度")]
public float AngleSpeed;
[Header("敌人暴走速度")]
public float speed2;

那么程序猿B看到就是这样的:
这里写图片描述

这样是不是非常舒服了。

三.【Range】:限定变量的范围

还是刚才的例子:程序猿B在设置speed的时候,设置的speed速度太大了:speed=1000。
游戏直接出了BUG。

原来:speed的范围是0——100的。程序猿A想了下:这样吧,我给你限定下好了。

[Header("敌人标准速度"),Range(0, 100)]
public float speed;
[Header("玩家移动速度"),Range(0, 200)]
public float moveSpeed;
[Header("玩家角速度"), Range(0, 500)]
public float AngleSpeed;
[Header("敌人暴走速度"),Range(0,200)]
public float speed2;

[Range(min,max)]: min是最小值,max是最大值。设置后会在面板上显示滑动条。

于是inspector窗口是这样显示的:
这里写图片描述
这样好清楚了,避免出现一些不要必要错误了。

小结:【Range】:可以限定变量的范围,比如一些需要在inspector面板设置的参数,而且有大小限制的。最好加上【Range】。

四。【SerializeField】:强制unity去序列化一个私有域。
当我们需要定义一些变量的时候。一般如果不是非常必要。一般是不会公开的,为了保护这些变量会用private修饰。表示该变量只会在该脚本内部使用。

但是有时候,咱们会怀念,bublic修饰带来的inspector面板上可编辑方便了。 【SerializeField】就是为了将私有的变量可以在inspector编辑的功能;
[SerializeField]
private GameObject obj;

是不是很方便?

五.[System.Serializable]:序列化一个类

直接上代码:下面是这样的:SrializeObj 是一个普通的类。它被【Serializeable】修饰了,其中成员里:私有的成员Obj1被【SerializeField】修饰了。showInt,和 hideFloat是Public的。其中:hideFloat是被【HideInInspector】修饰。

然后Test_SerializeField 类有一个成员是srializeObj,被【Serializeable】修饰。 大家猜猜inspector面板会怎么显示?

[System.Serializable]
public class SrializeObj {
    [SerializeField]
    private GameObject obj1;
    public int showInt;
    [HideInInspector]
    public float hideFloat;
}

public class Test_SerializeField : MonoBehaviour {
    [SerializeField]
    private GameObject obj;
    [SerializeField]
    private SrializeObj srializeObj;
}

解释下哦:[System.Serializable]的作用呢。可以让一个类也序列化。就是说有[System.Serializable] 属性的类,可以当做普通变量一样在inspector面板显示编辑了。当然不同的是显示和修改的是该类的成员。 比如SrializeObj 这个类:有三个成员,其中showInt是Public的。当然可以显示在inspector面板上,obj1虽然是私有的,但是被[SerializeField]修饰了,所以也可以。
**这里写图片描述**

工程文件下载:链接:https://pan.baidu.com/s/1hrSKYfq 密码:xbwq

Unity实用【】标签全解析:从Header到MenuItem的实战指南 本文全面解析Unity中的实用标签系统,从基础的Header、Tooltip到高级的MenuItem和ExecuteInEditMode,帮助开发者优化Inspector面板布局、提升数据安全性和开发效率。通过实战示例展示如何利用Range、SerializeField等标签实现代码自文档化和团队协作,特别适合Unity中级开发者提升编辑器扩展能力。 阅读详情

相关推荐

Unity编辑器拓展

Unity编辑器拓展

falsedewuxin的博客 1840

Unity中的一些PropertyAttribute(如[Header(“xxx“)])的用法与详细使用案例

Unity中的一些PropertyAttribute(如[Header("xxx")])的用法与详细使用案例

m0_56738500的博客 6794

Unity3d开发中Custom Attributes(C#)的应用

1. 什么是Attributes? 特性(Attribute):  官方解释:特性是给指定的某一声明的一则附加的声明性信息。 允许类似关键字的描述声明。它对程序中的元素进行标注,如类型、字段、方法、属性等。从.net角度看,特性是一种 类,这些类继承于System.Attribute类,用于对类、属性、方法、事件等进行描述,主要用在反射中。但从面向对象的级别看,其实Attribute是类型级

Miclo的专栏 1823

Unity中[Header]属性的作用

Unity中[Header]属性的作用

weixin_42069404的博客 1977

Unity3D开发实战:高频代码技巧、性能优化与功能实现锦囊

在Unity3D游戏开发中,性能优化与代码组织是决定项目成败的关键。其核心原理在于理解Unity的组件化架构与帧驱动机制,通过面向数据的设计思想,将复杂功能拆解为职责单一的组件,并利用事件进行通信,从而提升代码的可维护性与复用性。这一实践的技术价值在于能显著降低内存泄漏风险,减少GC(垃圾回收)压力,并优化CPU与GPU的执行效率。在应用场景上,无论是处理UGUI动态布局、视频流播放,还是集成外部模型与第三方插件,良好的编码习惯与性能敏感意识都至关重要。本文聚焦于Unity3D开发中的实用代码技巧,深入探讨

weixin_30425949的博客 458

Unity3D集成SQLite:从环境搭建到可视化数据管理实战

在游戏与应用开发中,本地数据存储是核心需求,涉及玩家存档、排行榜和道具系统等场景。嵌入式数据库技术通过将轻量级数据库引擎直接集成到应用中,实现了高效、结构化的数据管理,无需复杂服务器部署。其原理是基于文件系统的SQL数据库引擎,提供完整的ACID事务支持,技术价值在于平衡了功能强大性与部署简便性,特别适用于单机游戏、工具软件及需要离线能力的应用。通过ORM框架和可视化界面,开发者可以便捷地进行数据模型设计、CRUD操作与性能优化。本文聚焦Unity3D平台,结合sqlite-net等热词,详细解析SQLit

weixin_33985507的博客 275

Unity-常用的Attribute标签

AddComponentMenu 描述 AddComponentMenu属性使您可以将脚本放置在“组件”菜单中的任何位置,而不仅仅是“组件->脚本”菜单。 您可以使用它来更好地组织“组件”菜单,这样可以在添加脚本时改善工作流程。 using UnityEngine; [AddComponentMenu("Transform/Follow Transform")] pub...

Htlas的博客 587

Rimworld Mod报错排查指南:读懂XML错误日志,快速定位问题根源

本文详细解析了Rimworld Mod开发中常见的XML错误日志,帮助开发者快速定位和解决问题。从错误日志结构分析到高频错误场景实战,再到高级调试工具链的使用,全面提升Mod开发效率。特别针对XML标签闭合、继承关系陷阱和List类型处理等常见问题提供了具体解决方案。

weixin_30727835的博客 380

Unity3D仿星露谷物语开发14之Custom Property Attribute

创建自定义属性特性,类似于[SerializeField]的属性标签。当用该自定义属性特性标记变量时,可以在Inspector面板中看到相应的效果。

benben044的专栏 902

NC数据预处理避坑指南:从MATLAB读取到GeoTIFF导出,解决坐标翻转与值域异常

本文详细解析了NC数据预处理中的常见问题,包括MATLAB读取时的坐标翻转与GeoTIFF导出时的值域异常。通过实战案例,介绍了如何解决矩阵方向错乱、处理FillValue与scale_factor、精准移植空间参考等关键问题,帮助研究者高效完成气象数据的批量处理与GIS兼容性验证。

weixin_30788619的博客 653

STM32F407 CubeMX UART DMA高效解析BNO085九轴数据

本文详细介绍了如何在STM32F407平台上使用CubeMX配置UART和DMA高效解析BNO085九轴传感器数据。通过DMA循环接收机制实现低CPU占用的实时数据采集,并分享数据解析技巧、错误处理及实战调试经验,为嵌入式开发者提供完整解决方案。

o4p5q6r7s的博客 234

整理一些Unity3D中的语言标签功能

[ExcludeFromDocs] 自动生成API文档时,不列出该函数? [WrapperlessIcall] 声明函数为内部实现,非公开方法? [MethodImpl(MethodImplOptions.InternalCall)] 包含于System.Runtime.CompilerServices名空间下 通常用于友元函数声明(ext...

weixin_30407099的博客 797

对冲策略与马丁结合ea的编程实践(五)核心是把两个品种合成一个新品种

在外汇、数字货币、期货交易甚至赌博中,马丁策略、网格策略是最常用的策略,也是最容易被理解的策略,但是如何克服单边行情、极端行情,是使用马丁策略最为头疼的事情,如加大间距、加大资金量,只能缓解,并不能根本解决这样的情况,所以使用时大部分时候都心里没底。 有没有一种正确的思路,让行情控制在震荡范围以内呢,这是今天我要向大家分享的一个思路,那就是对冲。大家看下图: 大家可以看到欧美(EURUSD)和镑美(GBPUSD),这两个品种,大部分时候走势是一致的,那么我们有没有可能把他们两个品种进行一下合成,比如买0.

omidsky的博客 3738

Unity3d中的属性(Attributes)整理

Unity3d中的属性(Attributes)整理 ▼ 标签: attributes unity3d 属性 检视面板 序列化 分类: Unity3d Attributes属性属于U3D的RunTimeClass,所以加上以下的命名空间是必须的了。其它倒没什么需要注意的。本文将所有运行属性过一遍罢了。 using UnityEngine; using System.Collections;

qq_36255400的博客 1821

SAP UI5 控件剖析系列之 sap.m.DatePicker:单日选择的工程化用法、最佳实践与常见坑

在 SAP UI5 的输入控件族里,是最常被使用的日期选择控件。它把一个可编辑的输入框与一个弹出的日历整合在一起,允许用户用触摸、鼠标或键盘在本地化格式下选择某一天;控件既可以从弹出的日历里点选,也可以直接在输入框里键入日期。官方 Fiori 设计规范对它的定位就是:完成单个日期的选择,不牵涉时间,也不负责跨天的范围选择。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 342

出现 Tomcat:HTTP状态 404 - 未找到解决方法(图文分析)

出现如下问题 HTTP状态 404 - 未找到 类型 状态报告 消息 请求的资源[/ajax_war_exploded/]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。 Apache Tomcat/8.5.69 解决方法如下: 网上中的操作有步操作多数都误导 这个部署的环境目录上面是web.xml 下面的目录路径是web即可不用到webapp 保存重启服务器即可使用 其他配置中启动tomcat的操作具体 JRE 1.8 ...

码农研究僧的博客 13万+

Unity3D Odin Inspector Attribute回调的实现原理

环境:Unity2021.1.14 Odin3.0.4 语言:C# 面向:Odin进阶开发人员 问题 在Odin Attribute的使用过程中,比如OnValueChanged,通常会传入一个字符串指定回调函数。 通过字符串指定回调函数的方式是否能通过Odin的API主动调用?带着这样的疑问,我开始了探索。 情况 使用OnValueChanged的Attribute可以指定回调函数,在age值改变的时候会触发OnAgeChanged: public class Test1 : M

暗光之痕的博客 924

华为OD机试 - 字符串筛选排序 - 数组(Python/JS/C/C++ 双机位C卷 100分)

k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引,如果第k个最小ASCII码值的字母存在重复 则输出该字母的最小位置索引。输入一个由N个大小写字母组成的字符串,按照ASCII码值从小到大进行排序,查找字符串中第K个最小ASCII码值的字母(k>=1)。k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引,如果有重复字母则输出字母的最小位置索引。输出字符串中第k个最小ASCII码值的字母所在字符串的位置索引。第二行输入k ,k必须大于0 ,k可以大于输入字符串的长度。

学Java,找哪吒 1391

一天一个小知识 SpaceAttribute 和其他通用检查器

官网api解释 :https://docs.unity3d.com/ScriptReference/SpaceAttribute.html 面板上添加间距

我知道你很急,但是路要一步步走 388

Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图

其中,阵列方向图是评价阵列性能的重要参数之一。均匀面阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个圆盘。均匀线阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个矩形。本文将采用Matlab进行仿真,分别实现均匀面阵方向图、均匀线阵方向图和均匀圆阵方向图,并对三种阵列进行比较分析。通过以上代码仿真,我们可以对均匀面阵、均匀线阵和均匀圆阵进行方向图的绘制,进一步分析不同阵列在天线性能方面的差异。Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图。

2301_79326857的博客 3436

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

yii2前台引入html模板,[Yii2] 快速套模板,加载JS,CSS(HTML标签<base>)

std&colon;&colon;reverse&lowbar;iterator&colon;&colon;basegoogle chromium base MRU_Cache 支持反向erase iterator Erase(iterator pos) { deletor_(pos->second); ...Android 学习笔记之如何使用S...

weixin_33332712的博客 313

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Unity3D开源项目精选:从架构到渲染,十大工具提升开发效率

在游戏开发与实时3D应用构建中,架构设计与性能优化是核心挑战。通过依赖注入、响应式编程等软件工程原理,开发者能够实现代码解耦与可维护性提升,这在大型项目管理中尤为重要。其技术价值在于提供经过实战检验的最佳实践,显著减少重复开发工作。在Unity3D生态中,开源项目如UniRx和Zenject等框架,将上述理论转化为高效工具,广泛应用于游戏逻辑处理、UI系统构建等场景。本文聚焦于通过“awesome-unity3d”清单筛选出的十个关键项目,涵盖架构、渲染、网络同步及资源管理等领域,其中Unity Rende

weixin_34151004的博客 302

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Unity3D数据查看器:实时调试与运行时监控的IMGUI实现方案

在游戏开发中,实时监控与调试是提升开发效率、快速定位问题的关键技术。其核心原理是通过动态数据绑定与可视化界面,将运行时状态以结构化的方式呈现给开发者。这项技术的价值在于能够显著缩短调试周期,尤其是在处理复杂游戏逻辑、数值平衡和偶发性Bug时。通过构建一个可扩展的数据查看器,开发者可以实时观察和修改游戏变量,无需依赖传统的日志输出或手动检查。在Unity3D开发中,这通常涉及数据管理层与表现层的分离,其中IMGUI因其快速迭代和与编辑器无缝集成的特点,成为构建此类调试工具的理想选择。本文聚焦于利用IMGUI实

weixin_33845881的博客 316

three.js 中的 Int8BufferAttribute:基于 Int8Array 的紧凑型几何属性缓冲区实战指南

本文围绕 three.js 几何系统底层 API —— `Int8BufferAttribute` 展开,讲解如何以普通 JavaScript `Array` 直接构造 8 位有符号整数顶点属性,并深入源码解释其内部实现(`Int8Array` 转换、`itemSize`/`count` 计算、`normalized` 归一化语义)与典型应用场景。读完本文,你将掌握在 BufferGeometry

gitblog_01077的博客 442

Unity 脚本 —— 在 Inspector 上显示不一样的 Component

本文章将会根据自己在探索 Unity 的过程中,把学习到的

一个专注于游戏开发的小白 2277
下一篇: Unity3D笔记——UDP 广播和异步接受
YYL_Debug
博客等级 码龄10年 14粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值