可以/应该使用 ScriptableObjects 来存储字符数据吗?

Can / Should ScriptableObjects be used to store character data?

我正在开发一款回合制角色扮演游戏,想知道使用 ScriptableObjects 来存储角色数据是否是个好主意,这些角色数据会在运行时随时更改,例如统计数据,物品栏物品、法术和能力等。我知道 ScriptableObjects 通常是预定义的并且只读,所以我想在决定之前四处询问一下。

ScriptableObjects 非常适合在运行时存储数据,但如果您希望数据在游戏会话之间持续存在,则需要将数据写入文件。

Application.persistentDataPath can be used to get a path to a place where you can save game data in files. You can then create a file and save your data in json format.

这将允许您在运行时修改脚本对象,然后在保存游戏时将它们转换为 json 文本并将数据存储在文本文件中。

然后当您再次打开游戏时,您可以读取此文件并将数据 re-apply 写入脚本对象。

只要确保您的所有数据都是可序列化的,它就可以正常工作。

是的,ScriptableObjects 是存储角色数据的好方法。 实际上,我会根据游戏的复杂性建议一种更简单的方法。 Unity 有一个叫做 Visual Scripting 的东西,它公开了 3 个核心和非常有趣的变量类型。

  1. 场景变量 - 仅存在于场景中
  2. 应用程序变量 - 在应用程序的生命周期中存在
  3. 保存的变量 - 即使在应用程序关闭后仍然存在

这可以通过代码和 node-like 图表来访问。

使用Unity.VisualScripting

在这里查看:https://unity.com/features/unity-visual-scripting