有一个System.Serializable的class,平时作为public成员,可以直接在Inspector上显示和编辑。 我有成员变量比如float类型时,需要当某个属性被打开时,才在编辑器上显示,则将其设置成[HideInInspector],再在Editor代码中使用if(xxx){PropertyField(...)}的形式就可以实现了。 但是这一招对System.Serializable的class不起作...
编写自定义属性 在脚本中,以Unity3D引擎能够识别的类型及编程语言的基础数据类型定义的对象都可以作为一个属性出现在Inspector中,在C#script中,你同时还得将变量的访问权限改为public。 如果你想自定义一个数据类型,并且希望它能出现在inspector中,那么,在C#script中,你必须使用[System.Serializable]关键字将其序列化(...
有的时候对于U3D默认的Inspector不能满足需求,则可以对特定类型的Inspector面板进行自定义:编写一个对应的Editor类,然后重写其OnInspector方法,比如我们有如下类型: using UnityEngine; using System.Collections; [System.Serializable] public class TestClass { public Vector3 vec = Vector3.zero; [System.NonSerialize...
创建一个Transform的信息的类(UIAnimTransformInfo) 为了方便我们可以绘制动画信息在Inspector面板上,我们需要在信息类上加上[Serializable]标签方便我们序列化 [Serializable]publicclassUIAnimTransformInfo{publicTransformm_Transform;} 然后我们在UIAnimManager上添加我们的信息就可以了 publicclassUIAnimManager:MonoBehaviour{...
序列化是将数据结构或对象状态转换为 Unity 可存储并在以后可重构的格式的自动过程。Unity 的一些内置功能会使用序列化,比如保存和加载、Inspector 窗口、实例化和预制件等功能。请参阅有关内置序列化使用情况的文档,了解所有相关的背景详情。
Serializable是.Net自带的序列化 有时候我们会自定义一些单独的class/struct, 由于这些类并没有从 MonoBehavior 派生所以默认并不被Unity3D识别为可以Serialize的结构。自然也就不会在Inspector中显示。我们可以通过添加 [System.Serializable]这个Attribute使Unity3D检测并注册这些类为可Serialize的类型。具体做法如下: ...
首先看public MyClass m1,它的类型是MyClass,属于“没有标记[Serializable]属性的类”,不满足类型规则;它的字段是public,满足字段规则;系统要求两条规则同时满足的对象才能序列化,于是它被跳过了。 接下来看public MyClassSerializable s1,它的类型是MyClassSerializable,属于标记了[Serializable]属性的类,满足类型规则;...
简单来说Serializable作用之一是可以将非public类型的数据和结构显示在Inspector面板上,但是,难道只有这点作用吗? Serializable在C#中的作用.NET 中的对象序列化 序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流...
[SerializeField] //在Inspector版面中显示非public属性,并且序列化 private int C = 3; } (二)[Serializable ]的使用 1.注意加了[Serializable ]和没加的区别(加了[Serializable ]后,该类,属性就会显示在面板上) 2.凡是加了[Serializable ]的类,必须要有 public Person person; ...
在数据类型Struct和Class声明前使用[System.Serializable],可以将其显示在Inspector面板中进行赋值。 47.碰撞矩阵 在Edit > Project Settings... > Physics 中,通过设置Layer Collision Matrix 可以决定能够互相碰撞的层。 48.Collider相互作用矩阵 当两个对象发生碰撞时,会发送不同的碰撞事件,如OnTriggerEnter、OnCollisio...