unity3d 序列化SerializeField

首先,Unity会自动为Public变量做序列化,序列化的意思是说再次读取Unity时序列化的变量是有值的,不需要你再次去赋值,因为它已经被保存下来。
然后是,什么样的值会被显示在面板上?
已经被序列化,但是没有用HideInInspector标记的值。

[HideInInspector]表示将原本显示在面板上的序列化值隐藏起来。

[SerializeField]表示将原本不会被序列化的私有变量和保护变量可以序列化,这么他们在下次读取时,就是你上次赋值的值。

1如果a是公有的序列化变量。
1.1如果你想要在面板中看到a,那么用:
public int a;

1.2如果你不想在面板中看到a,那么用:
[HideInInspector]
public int a;
// 这样a可以在程序中被代码赋值,但不会在面板中看到并手动设置赋值。

2 如果a是私有的序列化变量,你想在面板中读取并保存,那么用:
[SerializeField]
private int a;

3.如果a是私有的序列化变量,你想在面板中读取,但是不保存,那么用:
[HideInInspector][SerializedField]
private int a;
public int b{
    get{return a;}
}
然后在Editor中显示,
EditorGUILayout.LabelField("value",game.B.ToString());

4如果a是私有序列化变量,你不想在面板中做任何操作(不想看到,也不想写),但是想要在程序中给它赋值,那么用。
[HideInInspector][SerializedField]
private int a;
public int b{
    get{return a;}
    set{a = value;}
}
时间: 2024-10-12 19:49:51

unity3d 序列化SerializeField的相关文章

Unity3D 序列化与动态加载

注:本实例开发环境为Unity3D 5.3.4,开发语言为C# 这次的任务是修改上次的ShootThatUFO打飞碟小游戏,使其具有数据驱动(data driven)游戏的特性. 游戏启动后,如果它发现 远程控制目录 有文件且版本与当前游戏不同,提示并升级.程序首页应显示升级后版本,并展示预定义的行为. 如果没有升级,用户可以选择从上次 Round 和 Turn 开始,或者 从头开始. 首先区分数据:有些数据是静态数据,有些数据是运行时数据.对他们处理的方法不一样. 游戏计划 - 为静态的游戏参

Unity 序列化 总结

查找了 Script Serialization http://docs.unity3d.com/Manual/script-Serialization.html 自定义序列化及例子: http://docs.unity3d.com/ScriptReference/ISerializationCallbackReceiver.OnBeforeSerialize.html 和Unity 圣典 在这博友 的基础上 再总结下Unity 的序列化 序列化的作用是: 可以显示变量(类,结构等)在inspe

关于Unity中常用的数据结构和JSON处理(专题三)

数据结构通俗来讲就是用某个对象去存储数据集合,比如要存储100个整数,要用什么样的数据类型能把它们存储好. Jason处理,服务器对接,配置文件的使用,Unity和Jason之间相互的转换. Array 数组 1: 类型[] 名字 = new 类型[数量]{"初始化的值", "", ''"}; 如果有初始值也可以省略大小;2: 优点: (1)内存连续,速度快; 3: 缺点: (1)大小固定,容易访问越界; Array实例 1.创建Unity项目和文件目录,

unity的自带特性

ContextMenu 右键组件的时候,出现并执行 ContextMenuItem 似乎是上下文菜单的子菜单,不清楚 DisallowMultipleComponent 是否允许多个这样的组件 TooltipAttribute 对于public的成员,在行为面板上增加说明内容 Space 设置这个对象在行为面板显示的高度 Header 附加一个主标题 Range 让这个数值应用范围操作杆 Multiline 让这个文字多行显示(非常有用) PropertyAttribute 不能直接用,但可以用

Unity3D中的序列化测试

Unity3D中序列化字段常使用[SerializeField],序列化类常采用[System.Serializable],非序列化采用[System.NonSerialized]. 序列化类使用时发现一些区别.测试如下: (1) 将脚本第一次拖拽到场景中后,运行程序.发现,对类进行序列化后,id,name会保持在代码中写的字段值. 如果我们退出运行,对检视面板的值进行修改,再运行,如下图所示.那么会始终运行检视面板中修改的值! 如果我们退出运行,对代码中的值进行修改,再运行,如下图所示.那么发

Unity3D使用Litjson序列化

var jsonStr = JsonMapper.ToJson(tmpType); var tmpObject = JsonMapper.ToObject<TestClass>(jsonStr); 序列化和反序列化. 需要注意float类型要转换成double类型,否则会出错. 序列化对私有成员似乎无效,还是要全public出来. Dictionary成员,key必须是string类型. Unity3D使用Litjson序列化,布布扣,bubuko.com

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

非public变量需要加[SerializeField]才能序列化 例如: MonoBehaviour中: [SerializeField] private float m_xxx; 在相应的CustomEditor脚本中: SerializedProperty m_xxx= serializedObject.FindProperty ("m_xxx"); m_xxx.floatValue=1.0f;//*** 否则的话***句会报空引用错误.

c# 与 Unity3d 中的序列化

圣典中对于Unity3D的序列化介绍很容易和C#的序列化介绍搞混,做个笔记,方便以后查找. 很多资料算是拾人牙慧. 一.Serializable 序列化 Inherits from Attribute The Serializable attribute lets you embed a class with sub properties in the inspector. Serializable(序列化)属性让你植入一个类用替代内容在Inspector(检视面板) You can use t

Unity3D中xml序列化出错的问题

非继承自MonoBehaviour的类,里面包含Animation,Transform成员,成员以属性形式存在.然后序列化报错 目前没有比较好的解决方法,可以换成函数 不太理解自带的xml序列化为什么没有过滤属性.那么这类问题基本上都是这样造成的