话题: 编程语言

Unity中如何序列化?

写回答
  • 邀请回答
  • 举报
  • 豆子_90723
    2021.03.01

    你现在的结果,都是你以前的种种行为造成的福彩双色球。如果你讨厌自己的现在澳洲幸运20,更应该反思一下自己。因为每一个你不满意的现在幸运飞艇,都有一个不努力的曾经。

  • 匿名用户
    2018.08.22
    在Unity中,在检视面板中可以看到的,就是被成功序列化了的参数。与序列化相关的常用的关键字有SerializeField,HideInInspector,NonSerialized,Serializable并可以组合使用。
    • SerializeField : 表示变量可被序列化。众所周知,公有变量可以在检视面板中看到并编辑,而私有和保护变量不行。SerializeField与private,protected结合使用可以达到让脚本的变量在检视面板里可视化编辑,同时保持它的私有性的目的。
    • HideInInspector : 将原本显示在检视面板上的序列化值隐藏起来。
    • NonSerialized :通过此方法可以将一个公有变量不序列化并且不显示在检视面板中。
    • Serializable:用在类的前面,表示该类可被序列化。
    下面用一段代码来举例说明:
    public class Test :Monobehavior
    {
    public int a; //序列化,显示
    private int b; //不序列化,不显示
    [SerializeField ] int c; //序列化,显示
    [HideInInspector] public int d; //序列化,不显示
    [NonSerialized ] public int e; //不序列化,不显示
    public Test2 test2; //序列化,显示(可序列化的部分)
    }

    [Serializable ]
    public class Test2
    {
    public int aa;
    private int bb;
    }
    此外,Unity还有类SerializedObject,常用于编辑器模式下的工具或导入器中,修改资源或者Prefab的属性。

    注意:并非所有的公有变量都是可以被序列化的。其中const,static是静态的,属于类而非对象,无法序列化。链表和字典在内存中的存储是不连续的,也无法序列化。