我在Unity中保存/加载场景的所有示例都只是保存/加载简单数据(如播放器当前的健康状况和位置),或者他们是使用Unity商店的可购买资产。我需要的逻辑比只保存一些预定义的字符参数要复杂得多,我宁愿学习正确的方法来代替购买Unity商店资产,所以我在这里问
我的场景中有一些演员(NPC和敌人)在Unity编辑器的场景中定义,还有一些演员在运行时通过脚本动态添加。当玩家保存时,我想记录当前位置/状态/等。每个演员,然后在玩家加载游戏时将这些演员恢复到他们的最后状态。
对于在编辑器中Unity场景中定义的演员,我必须能够在我的持久数据中查找相应的演员数据,并将该状态重新应用于演员。我在这里的主要斗争之一是能够识别哪个数据集到哪个演员,因为Unity场景中的演员通常只有通用名称(如goblin
)所以没有办法告诉来自实例B的实例A.我考虑过创建一个我可以分配给每个actor的PersistentData
对象,让PersistentData
对象为每个actor生成唯一的GUID。但是对于像保存/加载场景状态这样常见的东西,我不想编写一堆自定义逻辑,如果已经构建了一些东西,我会做我想做的事情。
我遇到的第二个问题是,对于动态添加到场景中的actor,我必须编写一些代码以在加载场景后重新创建它们。同样,如果已经有内置或接受的方式,我不想写一堆代码并重新发明现有轮子的坏传真。
我的演员都来自MonoBehaviour
,所以我无法直接将它们序列化。
Unity中是否有现成的方法来执行此操作,还是有一种普遍接受的处理此方案的方法?