SerializedProperty 序列化属性

Unity序列化属性获取:从SerializedObject到运行时反射的完整指南 序列化是游戏开发中数据持久化的核心技术,它允许将对象状态转换为可存储或传输的格式。在Unity引擎中,序列化系统通过特定的规则管理组件数据的保存与加载,其核心价值在于实现编辑器与运行时数据的无缝衔接。对于编辑器工具开发、数据驱动架构和自动化流程构建,深入理解序列化机制至关重要。通过SerializedObject与SerializedProperty API,开发者可以编程方式访问和修改序列化字段,包括数组和嵌套结构,这为创建自定义Inspector、批量处理工具提供了基础。然而,这些API仅限于编辑器环境 阅读详情

SerializedProperty 序列化属性

SerializedProperty and SerializedObject are classes for editing properties on objects in a completely generic way that automatically handles undo and styling UI for prefabs.

SerializedProperty和SerializedObject类用于对象编辑器属性,是完全通用的方法,自动处理撤销和为预设的UI样式。

Note: This is an editor class. To use it you have to place your script in Assets/Editor inside your project folder. Editor classes are in the UnityEditor namespace so for C# scripts you need to add "using UnityEditor;" at the beginning of the script.
注意:这是一个编辑器类,如果想使用它你需要把它放到工程目录下的Assets/Editor文件夹下。编辑器类在UnityEditor命名空间下。所以当使用C#脚本时,你需要在脚本前面加上 "using UnityEditor"引用。

SerializedProperty is used in conjunction with SerializedObject and Editor classes.

SerializedProperty与SerializedObject和Editor类配合使用。

// C# example: A custom Inspector for Transform components.
//自定义Transform组件的检视面板
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Transform))]
public class TransformInspector : Editor {

	SerializedObject m_Object;
	SerializedProperty m_Property;

	void OnEnable () {
		m_Object = new SerializedObject (target);
		m_Property = m_Object.FindProperty ("m_LocalPosition.x");
	}

	void OnInspectorGUI () {
		// Grab the latest data from the object
		//从对象抓取的最新数据
		m_Object.Update ();

		// Editor UI for the property
		//属性的编辑器界面
		EditorGUILayout.PropertyField (m_Property);

		// Apply the property, handle undo
		//应用属性,撤销
		m_Object.ApplyModifiedProperties ();
		}
}
Unity内置修改器:运行时调试的正确打开方式 Unity内置修改器并非外挂工具,而是基于Editor Scripting API构建的合法运行时调试机制。其核心原理是通过EditorConnection实现编辑器与Player进程间的实时通信,并借助SerializedProperty系统穿透访问修饰符,直接操作序列化数据快照。该技术具备零注入、免热重载、绕过反作弊检测等工程优势,显著提升中小型项目的本地化调试效率。典型应用场景包括策划自助调参、QA批量回归测试、美术实时光照验证等。本文聚焦Unity游戏开发中被长期低估的‘本地化调试基础设施’,深入解 阅读详情

相关推荐

Unity自定义Inspector:从Attribute到PropertyDrawer的完整指南

在Unity引擎开发中,Inspector窗口是开发者与游戏对象组件交互的核心界面。其底层原理基于Unity的序列化系统和编辑器GUI框架,通过特性(Attribute)为代码元素添加元数据,并利用PropertyDrawer控制其在Inspector中的可视化表现。这项技术的核心价值在于提升开发效率、构建专业工具链并增强团队协作的易用性。在实际应用场景中,无论是为策划美术同事定制直观的参数配置面板,还是开发复杂的编辑器工具,自定义Inspector都至关重要。本文将深入探讨如何通过自定义Attribute

weixin_27945229的博客 276

Unity自定义Inspector菜单:从零打造高效编辑器工作流

在Unity开发中,编辑器扩展是提升工作效率的核心技术。其原理基于IMGUI系统,通过自定义编辑器类重写OnInspectorGUI方法,实现对组件Inspector界面的定制化绘制。这项技术的价值在于将复杂的代码逻辑转化为直观的UI控件,极大降低了使用门槛,加速了开发迭代。它广泛应用于批量操作、调试工具、数据配置等场景,是解决诸如unity编辑器物体批量添加组件、unity 场景修改记录插件等高频需求的基础。本文聚焦于最实用的自定义Inspector菜单实现,通过实战代码演示如何为MonoBehaviou

weixin_32570803的博客 352

Unity自定义属性绘制器:从PropertyAttribute到PropertyDrawer的完整指南

在Unity编辑器开发中,属性(Attribute)是一种强大的元数据标记机制,用于为代码元素添加声明式信息。其核心原理是通过反射在编译或运行时读取这些标记,从而改变目标的行为或表示方式。这一技术为编辑器工具链带来了巨大的价值,能够实现高度定制化的Inspector界面,提升开发效率和配置体验。在实际应用场景中,开发者常需为特定数据类型(如枚举、结构体或资源引用)创建直观、易用的自定义编辑器控件。这正是Unity的PropertyDrawer系统发挥作用的地方,它作为PropertyAttribute的“画

ciya3282的博客 292

SerializedProperty类

一、SerializedProperty类属性及函数 首先提供官方参考文档:API-Reference-SerializedProperty 概述:命名空间在UnityEditor内;SerializedProperty类通常和SerialedObjec以及Editor类一起使用;用于修改属性的内容; 属性 boolValue / floatValue / doubleValue / i...

mozhi 6115

Unity CustomEditor实战:打造高效自定义属性面板

本文详细介绍了Unity中CustomEditor的实战应用,帮助开发者打造高效的自定义属性面板。通过基础创建、高级定制技巧和实战案例,展示了如何优化字段排列、添加交互控件和实现参数联动,显著提升开发效率。特别适合需要频繁调整参数的Unity开发者。

weixin_29001419的博客 273

Unity预制体批量修改:SerializedProperty安全重构方案

预制体批量修改是Unity中大型项目维护的核心工程问题,本质涉及序列化字段的精准定位与安全写入。其原理依赖于Unity编辑器的SerializedProperty API,而非文本正则替换,从而规避YAML结构破坏、引用丢失和Prefab Variant覆盖失效等风险。该技术具备强可预测性与可回滚性,显著提升参数调整、方法名变更、事件绑定更新等场景的修改效率与稳定性。典型应用场景包括UI按钮事件统一迁移、角色属性参数全局修正、自定义脚本字段重命名修复等。本文聚焦基于LoadPrefabContents+Se

weixin_30660027的博客 652

2024-02-25 Unity 编辑器开发之编辑器拓展7 —— Inspector 窗口拓展

单独为某一个脚本实现一个自定义脚本,并且脚本需要继承 Editor。一般该脚本命名为:自定义脚本名 + Editor。在该脚本前加上特性。命名空间:UnityEditor特性名:CustomEditor(想要自定义脚本类名的 Type)// 通过该特性,可以为 Lesson22 脚本自定义 Inspector 窗口中的显示typeofLesson22...声明对应 SerializedProperty 序列化属性对象,主要通过它和自定义脚本中的成员进行关联。

zheliku的博客 2565

台式机ubuntu系统屏幕无法调节的问题(已解决)(汇总)

背景:新配了一台主机,安装了双系统,windows下屏幕在带鱼屏上显示良好,但Ubuntu系统屏幕拉伸严重。 问题描述:系统没有适应屏幕被整个拉伸了,进入设置界面,显示Built-in Display,分辨率只有1024*768无法设置。 尝试一:网上最多的方法就是使用xrandr, 结果显示:xrandr:Failed to get size of gamma for output default 尝试二: 第一次进入命令行页面:login:填你的用户面 password:使用字母上方的数字键输入你的密码

weixin_45626706的博客 4625

Unity Editor 编辑器拓展 11——SerializedProperty 和 SerializedObject 的使用

在自定Inspector面板的时候,经常会使用到SerializedProperty 和 SerializedObject。使用这两个类可以十分方便的进行数据的显示与处理。他们自带撤销记录。使用的Unity内置的设定序列化数据。与别的GUI控件搭配十分相称。 SerializedProperty的坑 其在调用DeleteArrayElementAtIndex()的时候不会自动调整列表,而是会在index处留下null。 所以要想删除列表中的某个元素,需要对同一个Index...

qq_14812585的博客 4443

从Palantir到AI时代:Forward Deployed Engineer模式的深度解析

《从Palantir到AI时代:FDE模式的创新与挑战》摘要:Palantir开创的前置部署工程师(FDE)模式正在成为AI创业公司的标配。该模式通过现场工程师深入了解客户需求,填补产品与实际应用间的鸿沟,颠覆了传统SaaS规模化路径。核心优势在于将定制化服务转化为产品发现机制,特别适合高度异质化的AI市场。成功关键在于平衡定制与标准化,通过合同价值增长、产品杠杆效应等独特指标衡量成效。FDE人才需要兼具领域洞察力与快速原型能力。这一模式表明,在AI等新兴领域,深入客户现场可能比单纯追求技术突破更能创造商业

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 4535

PyTorch、Torchvision、Torchaudio历史版本whl文件下载地址、版本对应关系与离线安装全攻略

本文详细解析了PyTorch、Torchvision和Torchaudio历史版本whl文件的下载地址、版本对应关系及离线安装全攻略。针对无网络环境下的安装挑战,提供了官方whl文件获取路径、版本匹配技巧和完整安装流程,帮助开发者高效解决兼容性问题,确保深度学习环境的稳定部署。

weixin_31960565的博客 378

【如何理解SerializedProperty】

SerializedProperty 是 Unity 编辑器的「安全操作手套」✅ 不怕误操作(有撤销保护)✅ 不用重复劳动(批量修改)✅ 不会忘记保存(自动标记)✅ 避免搞乱代码(隔离保护)就像医生做手术要戴手套一样,专业开发者编辑数据必用 SerializedProperty!🧤。

weixin_45478456的博客 709

15张图详解三方支付:总架构、5大核心业务处理流程、备付金管理

用户可以将银行卡与零钱账户绑定,建立银行结算账户与支付账户的连接,然后将银行账户资金充值到零钱账户中,或将零钱账号中的余额提现至绑定的银行卡。因此,用户在A支付机构的零钱一般只能支付给A支付机构的商户,如支付宝的零钱不能支付给微信的商户。这五大业务的协同运作,使得第三方支付机构这一庞大的支付服务平台能够为市场提供卓越的支付能力。到了结算时间,网联会向备付金集中存管账户提交结算指令,在第三方支付机构备付金集中存管账户内完成最终的结算,并将结算结果及额度变动情况通知给第三方支付机构,具体流程如图13所示。

银行信息系统应用架构详解 1044

脚本 3 序列化

今天我们聊聊序列化。 文章目录可序列化对象MonoBehaviourScriptableObject文件存储方式序列化属性定义SerializedObject 以及 SerializedProperty监听数据更新监听序列化事件编辑属性序列化声明,及Inspector自定义例子序列化事件监听例子ScriptableObject 例子 可序列化对象 序列化对象包括2种: MonoBehaviour ...

lrh3025的专栏 811

学Simulink——基于Simulink的Buck-Boost变换器双闭环PI+抗饱和设计建模示例

本文详细介绍了基于Simulink的非反相Buck-Boost变换器双闭环控制设计方法。针对Buck-Boost变换器特有的右半平面零点(RHPZ)和控制挑战,提出了电压-电流双闭环PI控制架构,并集成抗积分饱和机制。通过Simulink建模,实现了主电路、电流内环PI、电压外环PI、PWM及占空比限幅等模块的搭建,验证了在输入电压跌落(20V→10V)和负载突变(2A→4A)等场景下的稳定性能。仿真结果表明,输出电压波动小于0.35V,恢复时间快于1ms,电感电流有效限幅。文章还讨论了工程实践要点和扩展方

xiaoheshang_123的博客 318

万字详解YOLOv8网络结构Backbone/neck/head以及Conv、Bottleneck、C2f、SPPF、Detect等模块

YOLOv8是由Ultralytics开发的最先进的目标检测模型,推升了速度、准确性和用户友好性的界限。YOLO这一缩写代表“你只看一次”(You Only Look Once),通过在一次网络传递中同时预测所有边界框,提升了算法的效率和实时处理能力。相比之下,其他一些目标检测技术需要经过多个阶段或过程来完成检测。YOLOv8在流行的YOLOv5架构上进行了扩展,在多个方面提供了改进。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 14万+

当类继承UI类时,使其属性显示在Inspector面板上

当类继承UI类时,序列化属性没法正常显示在在Inspector面板上 初始: public class CircleImage : Image { private int segments;//片数 public float showPercent; } 处理: –静态字段需要使用[SerializeField],其作用是强制序列化静态字段 public class Circl...

u014589770的博客 1706

RK3588 Android12 添加HDMI和喇叭声音通道切换选项

rk3588 android12系统默认接hdmi out时,声音会切换到hdmi out输出,主板声卡喇叭输出会没有声音输出。现在添加一个选项设置hdmi out时,声音可以保持主板声卡喇叭输出。

Android系统开发笔记 4163

unity中的SerializedObject和SerializedProperty类

       SerializedObject和SerializedProperty是提供通用的方式编辑对象属性的类,可自动处理预制件和UI。01         构造函数接受Object对象或者数组。另一种额外接受一个Object对象。          isEditingMultipleObject() 是否可以序列化多对象。maxArraySizeForMultiEditing() ...

Tong1993222的博客 1万+

POCV/SOCV 、LVF的差别

1.POCV与OCV、AOCV 为了模拟片上PVT的差异带来的影响,最早提出了OCV(On Chip Variation)给每个cell都设置一个固定的derate值,来覆盖最悲观的情况,但是随着工艺发展,设计规模增大,OCV过度的悲观开始限制性能,于是又有了AOCV(Advanced On Chip Variation),用基于depth和distance的derate来取代单一的全局的derate值,但时序收敛的过程中逻辑级数depth的变化让时序分析的时间变得非常长,由此POCV诞生了。 POCV

m0_61544122的博客 5363

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Unity中选中文件夹时,在Inspector中给文件夹添加说明

"编辑器工具/文件夹全局配置""所有文件夹的说明配置""文件夹自定义说明"

lcl20093466的博客 33

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

unity3d 自定义属性视图

必须继承Editor 且放在Editor文件夹之中

习惯与规则决定命运 2194

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

unity, 非public变量需要加[SerializeField]才能序列化

非public变量需要加[SerializeField]才能序列化 例如: MonoBehaviour中: [SerializeField] private float m_xxx; 在相应的CustomEditor脚本中: SerializedProperty m_xxx= serializedObject.FindProperty ("m_xxx"); m_xxx.floatVa...

weixin_30894583的博客 116

Unity编辑器扩展之Component的Inspector面板

组件Component在Inspector面板上的显示是我们最常用到的功能,而在Inspector 面板中显示出来的其实就是序列化的数据。 下面先介绍成员变量的显示,解释几个特性的作用;然后介绍自定义inspector面板的流程,通过一个NavMeshSurfaceComponent的例子来介绍常用的一些函数。 Inspector——检视面板,可被检视的数据——beinginspect...

u012138730的专栏 5296

编辑器开发IMGUI/GUI—重新实现List的序列化实现自定义List默认值控制

通过手动实现效果背景,unity自带的序列化在数据量较大的时候很不好用,每次都要手动输入值,也没有默认值也不能在里面嵌入一些下拉栏来选择通过手动实现效果。

qq_54351806的博客 710

[UnityAPI]SerializedObject类 & SerializedProperty类

[UnityAPI]SerializedObject类 & SerializedProperty类 以Image类为例 1.MyImage.cs 1 using UnityEngine; 2 using UnityEngine.UI; ...

weixin_30360497的博客 1777
上一篇: [HideInInspector]也可用于隐藏属性显示
下一篇: Invalid option 'latest' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to
linuxheik
博客等级 码龄15年 865粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值