【问题标题】:Unity3D ScriptableObject serializationUnity3D ScriptableObject 序列化
【发布时间】:2020-01-04 03:53:25
【问题描述】:

我在保存游戏会话时遇到问题。这是保存数据中的一些 JSON 片段。

"boughtSpells":[{"instanceID":13864},{"instanceID":13421}]

这里有一些代码。

[CreateAssetMenu(fileName = "New Spell Pattern", menuName = "SpellPattern")]
[System.Serializable]
public class SpellPattern : ScriptableObject {
    public string spellName;

    [TextArea]
    public string spellDescription;
}

游戏数据模型。

[Serializable]
public class GameData
{
    public List<SpellPattern> boughtSpells;
}

我认为它保存了 Unity 的 Scriptable Object ID 的引用(它是唯一的,但不是持久的),而不是序列化其中的数据。 我需要正确序列化数据,但我不知道如何使用 Unity 的 Scriptable Objects 来制作它,但同时我不想更改这些 Scriptable Objects 的架构。

【问题讨论】:

    标签: c# unity3d serialization


    【解决方案1】:

    可编写脚本的对象不应在运行时进行编辑。 Scriptable Objects 的目的是: - 用于在编辑器会话期间保存和记录数据,例如库存系统 - 用于拥有由各种系统共享的资产

    为了在运行时保存数据模型,我建议您使用 Structs。

    如果您需要保存游戏状态/会话,您可以使用 PlayerPrefs,如果您要保存的数据不是纯 int 或字符串,您应该使用 Binaryformatter 以字节文件的形式将其序列化并保存到内存中( Application.PersitentDatapath 可能)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多