假设我有一个 PlayerData ScriptableObject 包含对 AvatarData ScriptableObject 的引用,如下所示:
public class PlayerData : ScriptableObject
{
public AvatarData avatar;
}
在游戏过程中,玩家可以将头像更改为另一个。所有 AvatarData 对象都保存在 .asset 文件中。我想保存对当前选择的 AvatarData 实例的引用并将其保存在 json/binary 文件中以供加载。
在内存中创建对象的情况下,InstanceID 将更改每个游戏会话。在 .asset 文件中序列化的对象实例呢?由于实例已保存到文件中,我们可以依赖它/确保 InstanceID 不会更改吗?JsonUtility.ToJson
将为每个对象生成带有 InstanceID 的 json,但我需要确保在调用JsonUtility.FromJsonOverwrite
. 我知道它不适用于在内存中创建的对象,但我认为它应该适用于保存为资产文件的实例。恐怕每次构建应用程序时 InstanceID 都可能会发生变化。
这个事情谁有经验?创建自己的 UUID/Hashtable 来引用 Unity3D 中的对象会更好吗?
我发现的大多数答案都建议使用 UnityEditor 命名空间,但它不能在构建中使用。