Unity3D属性监视面板(Inspector)

一。Unity3D属性监视面板(Inspector)

        Unity3D属性监视面板中的属性允许用户在代码外部改变脚本及组件的初始值。另外,属性监视面板中的值允许用户在游戏运行模式下随时更改,并且在游戏中立即生效,停止运行后各属性又能恢复到最初的状态,这是Unity3D提供的一种运行时调试方式。

        哪些对象可以作为属性出现在Inspector中呢?答案是Unity3D引擎能够识别的所有对象以及Unity3D所支持的编程语言的基础数据类型对象,另外再加上以这些可识别的对象构建的自定义数据类型(实质同前两项)。注意:属性是指所有能够出现在Inpector面板中的项;组件是属性中的一种,它必须是Unity3D引擎所能识别的基本对象之一,即必须继承于UnityEngine.Object。

       Unity3D还提供了一种方案方便我们自定义、美化Inspector界面。


二。编写自定义属性

       在脚本中,以Unity3D引擎能够识别的类型及编程语言的基础数据类型定义的对象都可以作为一个属性出现在Inspector中,在C#script中,你同时还得将变量的访问权限改为public。

       如果你想自定义一个数据类型,并且希望它能出现在inspector中,那么,在C#script中,你必须使用[System.Serializable]关键字将其序列化(在js中,类必须继承于System.Object),并且对象中的元素必须是基本数据类型或Unity3D对象或者已被我们定义的可以出现在监视面板中的自定义类型,在C#script中,你同时还得将变量的访问权限改为public。如下:

 
 
// js Example
class Test extends System . Object
{ var p = 5 ; var c = Color.white ; } var test = Test ();

// C# Example [ System . Serializable ] class Test { public int p = 5 ; public Color c = Color.white ; }
     当然,你也可以使用[System.NonSerialized](js中使用@System.NonSerialized)来将原本出现在Inspector的属性隐藏起来。如下:

// p will not be shown in the inspector or serialized
@System.NonSerialized
var p = 5;
 
// C# Example
class Test 
{
 // p will not be shown in the inspector or serialized
 [System.NonSerialized]
 public int p = 5;
} 
 
三。编写自定义Inspector(这里不只是自定义属性)
    编写自定义Inspector是基于自定义脚本的,首先,我们得自定义一个脚本或类文件,其次我们还得定义一个编辑这个类(脚本本身就是一个类)的Inspector的类,该类必须继承于Editor或EditorWindow,并存放在Editor目录下。
 待续。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity序列化监视面板是指将数据以可视化的形式显示在Unity编辑器的Inspector面板上的过程。默认情况下,Unity无法直接序列化Dictionary类型的数据到Inspector面板中。因此,我们需要进行额外的处理来实现这个功能。 为了实现Dictionary类型的序列化,可以通过创建一个SerializableDictionary类来解决这个问题。SerializableDictionary类是一个自定义的类,用于存储Dictionary中的键值对,并实现了Unity的ISerializationCallbackReceiver接口以实现序列化和反序列化。通过自定义SerializableDictionary类,我们可以在Inspector面板中显示并编辑Dictionary中的数据。 在Unity中,序列化是一种将数据从内存中转换成可存储或传输的格式的过程,而反序列化则是将数据从存储或传输的格式转换回内存中的过程。Unity的数据存储,包括本地类PlayerPrefs、Inspector以及Prefab等,都使用了序列化和反序列化的知识。通过序列化,我们可以方便地在Inspector面板中配置和编辑Unity对象的属性和数据。 通过以上的方法,我们可以实现Unity中的Dictionary类型数据的序列化和在Inspector面板中的显示。这样可以方便地配置和编辑Unity对象的属性,并进行必要的调整和修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【100个 Unity实用技能】 ☀️ | 将Dictionary字典中的数据序列化 到Unity Inspector监视面板](https://blog.csdn.net/zhangay1998/article/details/129135799)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Unity中的序列化与反序列化](https://blog.csdn.net/weixin_39668571/article/details/113547537)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值