SerializeField

Inherits from Attribute

Force Unity to serialize a private field.

强制Unity去序列化一个私有域。

You will almost never need this. When Unity serializes your scripts, it will only serialize public fields. If in addition to that you also want Unity to serialize one of your private fields you can add the SerializeField attribute to the field.

你差点儿从来不须要它。当Unity序列化你的脚本的时候。它将紧紧序列化公有域。假设作为附加你也想要Unity去序列化你的一个私有域,你能够加入SerializeField(序列化域)属性给这个域。

Unity will serialize all your script components, reload the new assemblies, and recreate your script components from the serialized verions. This serialization does not happen with .NET's serialization functionality, but with an internal Unity one.

Unity将序列化全部你的脚本组件,重载新的集合,而且又一次创建你的脚本组件从这个序列化版本号。这个序列化不会发生通过.Net的序列化功能,而是用一个内部的Unity序列化功能。

The serialization system used can do the following:

这个序列化系统使用能够做下面事情:

- CAN serialize public nonstatic fields (of serializable types) 

- 能够序列化公有的非静态域(序列化类型的)

- CAN serialize nonpublic nonstatic fields marked with the [SerializeField] attribute.

- 能够序列化非公有非静态域用[SerializeField]属性标记。

- CANNOT serialize static fields. 

- 不能够序列化静态域。

- CANNOT serialize properties. 

- 不能够序列化属性。

Your field will only serialize if it is of a type that Unity can serialize:

你的域将紧紧序列化假设他是Unity能够序列化的一种类型。

Serializable types are: 

序列化的类型有:

- All classed inheriting from UnityEngine.Object, for example Gameobject, Commponent, MonoBehaviour, Texture2D, AnimationClip.. - All basic data types like int, string, float, bool. - Some built in types like Vector2, Vector3, Vector4, Quaternion, Matrix4x4,
Color, Rect, Layermask.. - Arrays of a serializable type 

- 全部继承自UnityEngine.Object的类,比如GameObject,Component,MonoBehaviour,Texture2D,AnimationClip..- 全部基本类型像int,string,float,bool.- 一些内建类型像Vector2,Vector3,Vector4,Quaternion,Matrix4x4,Color,Rect,Layermask..- 一个序列化类型的Array(数组)

- List of a serializable type (new in Unity2.6) 

- 一个序列化类型的列表(新的在Unity2.6)

- Enums 

- 枚举。

Headsup note: if you put one element in a list (or array) twice, when the list gets serialized, you'll get two copies of that element, instead of one copy being in the new list twice.

特别注意:假设你放一个元素在一个列表(或者数组)两次,当列表被序列化的时候,你将得到两个这个元素的拷贝,而不是一个拷贝两次在新的列表。

Hint: Unity won't serialize Dictionary, however you could store a Listf<> or keys and a List<> for values, and sew them up in a non serialized dictionary on Awake(). This doesn't solve the problem of when you want to modify the dictionary and have it "saved"
back, but it is a handy trick in a lot of other cases.

暗示:Unity不会序列化Dictionary(字典)。然而你能够存储一个列表给键,一个列表给值。而且缝合他们在一个非序列化dictionary(字典)在Awake()。这不会解决当你想要改动dictionary(字典)和让它的"被保存"返回的问题。可是它在非常多其它的情况里是一个便利的窍门。

For UnityScript users: Fields in c# is a script variable in UnityScript, and [SerializeField] becomes @SerializeField. [Serializable] on a class becomes @script Serializable in a UnityScript

给UnityScript用户:C#中的域在UnityScript中是一个脚本变量,而且[SerializeField]变成@SerializeField。[Serializable] 在一个类上变成@script Serializable在一个UnityScript。

// Javascript example

//This field gets serialized because it is public.
//这个域被序列化由于他是公开的。
var name = "John"; //This field does not get serialized because it is private.
//这个域没有被序列化由于它是私有的。 private var age = 40; //This field gets serialized even though it is private
//这个域被序列化虽然他是私有的。 //because it has the SerializeField attribute applied.
//由于它应用了SerializeField属性
@SerializeField
private var hasHealthPotion:boolean = true; function Update () {
}
//C# example
using UnityEngine; public class SomePerson : MonoBehaviour {
//This field gets serialized because it is public.
public string name = "John"; //This field does not get serialized because it is private.
private int age = 40; //This field gets serialized even though it is private
//because it has the SerializeField attribute applied.
[SerializeField]
private bool hasHealthPotion = true; void Update () {
}
}

Unity3D的SerializeField 序列化域名的更多相关文章

  1. Unity3D中的序列化测试

    Unity3D中序列化字段常使用[SerializeField],序列化类常采用[System.Serializable],非序列化采用[System.NonSerialized]. 序列化类使用时发 ...

  2. c# 与 Unity3d 中的序列化

    圣典中对于Unity3D的序列化介绍很容易和C#的序列化介绍搞混,做个笔记,方便以后查找. 很多资料算是拾人牙慧. 一.Serializable 序列化 Inherits from Attribute ...

  3. Unity3D学习笔记(一):Unity简介、游戏物体、组件和生命周期函数

    Project(工程.项目):工程是把游戏开发当前所需要的资源归类管理用的. Console控制台:日志.报错.调试,右上角,消息过滤 Assets:资源,存储游戏中一切用到的资源 Library:临 ...

  4. unity3d常用属性汇总

    unity常用的是C#语言.而C#语言有Attribute属性.特别强大.所以unity开发的时候.可以在变量加Attribute属性来达到开发人员想要的效果 RequireComponent:约束组 ...

  5. (转)Unity3d中的属性(Attributes)整理

    Attributes属性属于U3D的RunTimeClass,所以加上以下的命名空间是必须的了.其它倒没什么需要注意的.本文将所有运行属性过一遍罢了. using UnityEngine; using ...

  6. Unity3d该物业(Attributes)整理

    http://blog.sina.com.cn/s/blog_5b6cb9500101857b.html Attributes属性属于U3D的RunTimeClass,所以加上下面的命名空间是必须的了 ...

  7. Unity3D开发之3D按钮的声音播放

    这里我们首先就简易的制作一个非常简单的3D按钮![ 图中就一个cube 加个3DText,然后我们就编写代码 [RequireComponent(typeof(CompoundButton))]//特 ...

  8. Unity3d中的属性(Attributes)整理

    Attributes属性属于U3D的RunTimeClass,所以加上以下的命名空间是必须的了.其它倒没什么需要注意的.本文将所有运行属性过一遍罢了. using UnityEngine; using ...

  9. (转载)Unity3d中的属性(Attributes)整理

    附加: float字段检视面板修改:[Range(1,10)] 对属性进行分组:[Header("xxx")] 工具栏中调用方法,类文件需在Editor文件夹中:[MenuIte( ...

随机推荐

  1. Android程序猿学习路径

    而一些工作,而不仅仅是通信毕业生,很多学生没有工作或熟练Android工作人员指导的情况下,,如何学习Android而提高Android更多关注的水平. 享: 1.Android知识 1.1.站点资源 ...

  2. 同一个PC只能运行一个应用实例(考虑多个用户会话情况)

    原文:同一个PC只能运行一个应用实例(考虑多个用户会话情况) class Program { private static Mutex m; [STAThread] static void Main( ...

  3. CloudFoundry 中的GoRouter性能測试

    之前一直感觉CloudFoundry的GoRouter的性能不靠谱,或者我们的CloudFoundry 部署架构存在问题,想着进行一些压力測试,可是一直苦于没有压力測试的工具.上一周,部门须要出一个測 ...

  4. [Android]Can&#39;t create handler inside thread that has not called Looper.prepare()

    更新是由于在新的线程来打开UI只有一个错误.子线程更新主线程UI需要使用Handler. 还有比如今天出现以下错误.码,如以下: send.setOnClickListener(new OnClick ...

  5. [渣译文] SignalR 2.0 系列: 支持的平台

    原文:[渣译文] SignalR 2.0 系列: 支持的平台 英文渣水平,大伙凑合着看吧,并不是逐字翻译的…… 这是微软官方SignalR 2.0教程Getting Started with ASP. ...

  6. telnet发电子邮件

    无聊今天的工作,想想一个学生被提到最后一次telnet发电子邮件,所以我想试试.最后,成功的实践,这里做个总结. 首先,cmd进telnet打开回话: 下面红色字体为命令. 1.open smtp.1 ...

  7. WWDC2014开源

    A Cocoa OSX App to help you download WWDC2014 videos 地址:https://github.com/iosxtools/WWDC2014 版权声明:本 ...

  8. JS基础——函数的创建和使用

    在JS中函数在使用时实质上和我们平时学习的编程语言中的函数类似,它相同也具有函数名,參数,返回值,函数体等这些寻常函数所具有的内容.可是作为一种脚本语言,它确实也有自己不一样的地方. 一.创建 < ...

  9. c#委托实例化和调用语句

    系统訪问数据或调用方法有两种操作方式:一种是通过名称訪问或调用,还有一种是通过所在的内存地址来訪问调用.为了系统的安全与稳定,NET Framework的CLR库不同意程序通过指针来直接操作内存中数据 ...

  10. Codeforces Round #216 (Div. 2) E. Valera and Queries (BIT)

    标题效果: 给很多分布 x 行轴. 然后给出了一个非常的多点集,问该组点分布多少不同段. IDEAS: 分散成多个线段点集的. 给出的线段的话,也就是说这个点集上不会有点在这条线段上. 所以我们就是求 ...