一般设定游戏对象参数是用public多还是serializedatagrid field 对象多

南京信息工程大学滨江学院《Java程序设计》试卷B卷_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
南京信息工程大学滨江学院《Java程序设计》试卷B卷
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩12页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢手游开发(13)
Serialize功能
Unity3D 中提供了非常方便的功能可以帮助用户将 成员变量 在Inspector中显示,并且定义Serialize关系。
简单的说,在没有自定义Inspector的情况下所有显示在Inspector 中的属性都同时具有Serialize功能。
换句话说,就是你在Inspector看到什么,保存游戏的时候,这些值就会被保存成二进制文件。
本文说说可被Serialize的变量的定义方法
1. public 变量
在没有加入任何Attribute的前提下,public变量是默认被视为可以被Serialize的。所以public声明的变量在Inspector面板中是可见的。
public int MaxE
2. [SerializeField] Attribute
强制unity去序列化一个私有域
这是一个内部的unity序列化功能,有时候我们需要Serialize一个private或者protected的属性,这个时候可以使用[SerializeField]这个Attribute:
[SerializeField]
protected int foobar = 0;
注意: 这样定义出的成员变量也是会在Inspector中显示出来。
在Unity最新的UI系统中,UI属性上方全部添加[SerializeField] ,如下所示
[SerializeField]
private int ID;
SerializeField参考文档:
3. 单独的class或struct
Serializable是.Net自带的序列化
有时候我们会自定义一些单独的class/struct, 由于这些类并没有从 MonoBehavior 派生所以默认并不被Unity3D识别为可以Serialize的结构。自然也就不会在Inspector中显示。我们可以通过添加 [System.Serializable]这个Attribute使Unity3D检测并注册这些类为可Serialize的类型。具体做法如下:
[System.Serializable]
public class FooBar {
public int foo = 5;
public int bar = 10;
注意:Serializable只可以对class,struct,enum,delegate进行序列化,不可以对属性序列化
代码1:添加Serializable特性
代码2:不添加Serializable特性
所以,如果class添加Serializable特性之后,定义为public变量会在Inspector面板上面显示,否则即使是public类型的变量,也无法在Inspector面板上面显示。
4. ScriptableObject
ScriptableObject 类型经常用于存储一些unity3d本身不可以打包的一些object,比如字符串,一些类对象等。用这个类型的子类型,则可以用BuildPipeline打包成assetbundle包供后续使用,非常方便,具体请参考 [cb]ScriptableObject 序列化
NonSerialize的变量的定义方法
4.1. protected, private, internal 变量
默认情况下,protected, private, internal变量将不会被serialize.
4.2. [System.NonSerialized] Attribute
有时候我们需要定义一些public变量方便操作,但是又不希望这些变量保留。这个时候可以利用[System.NonSerialized]来完成这个操作:
[System.NonSerialized] public float foobar = 1.0f;
4.3. readonly, const, static 修饰符
如果变量加入了readonly, const, static等修饰符,无论他的serialize设置如何,都将不会进行serialize
4.4. Dictionary
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:15327次
排名:千里之外
原创:37篇
转载:21篇
(7)(5)(8)(7)(4)(9)(19)

我要回帖

更多关于 serializefield 的文章

 

随机推荐