gpt4 book ai didi

serialization - 序列化和反序列化 Unity3D MonoBehaviour 脚本

转载 作者:行者123 更新时间:2023-12-04 06:00:57 24 4
gpt4 key购买 nike

背景:从 Monobehaviour 继承的类不能被序列化。

前提:一种保存 MonoBehaviour 脚本的数据(变量/字段及其值)的方法,以便可以对其进行序列化,然后再次反序列化并使用此数据“填充”相应的 MonoBehaviour 脚本的变量/字段值。

到目前为止尝试过:

  • 具有与 MB 脚本具有相同字段但不从 MB 继承的可序列化“包装器/容器”类。运行良好,但每个 MV 脚本都需要它自己的包装类和它自己的包装函数。
  • 序列化 List<FieldInfo>并用 MB 的字段填充它……有效 30%;
  • FieldInfos被添加但类型错误,和
  • 由于需要类的实例而无法访问反序列化它们的值时,但只有一个列表可用

  • 我觉得这不会那么难,但我的反射技能和相关技能有限,但看到保存/加载是一个相当普遍的功能,我希望有人做过这件事,或者有人可以为我指明正确的方向。

    最佳答案

    使用 .NET 中内置的 BinaryFormatter 序列化 MonoBehaviour 没有简单的方法。您可以考虑以下几个选项:

  • 使用 Memento Patter .这就是(或多或少)您尝试使用包装器实现的目标。 Momento 假设保存和恢复对象的内部状态,因此序列化是一种技术。
  • 使用 Unity 序列化,通过声明方法:

    无效序列化(){}

    无效反序列化(){}

    在您的 MonoBehaviour 脚本中,您将在方法中选择要序列化/反序列化的属性/字段。
  • 有一个有趣的框架,源代码在GitHub .它有一个自定义的序列化框架,可以让你序列化几乎任何东西(不仅仅是单一行为)。没用过,here is the forum page在 Unity3d 论坛上,我相信值得一看。
  • 关于serialization - 序列化和反序列化 Unity3D MonoBehaviour 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29719869/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com