Допустим, у меня есть объект ScriptableObject PlayerData, который содержит ссылку на ScriptableObject AvatarData, например:
public class PlayerData : ScriptableObject
{
public AvatarData avatar;
}
Во время игры игрок может сменить аватар на другой. Все объекты AvatarData сохраняются в файлах .asset. Я хочу сохранить ссылку на текущий выбранный экземпляр AvatarData и сохранить его в json / двоичном файле для обратной загрузки.
В случае создания объектов в памяти InstanceID будет изменять каждую игровую сессию. А как насчет экземпляров объектов, сериализованных в файлах .asset? Поскольку экземпляр сохраняется в файл, можем ли мы полагаться на него / быть уверены, что InstanceID не изменится? JsonUtility.ToJson
сгенерирует json с InstanceID для каждого объекта, но мне нужно быть уверенным, что я получу тот же объект при вызове JsonUtility.FromJsonOverwrite
. Я знаю, что он не будет работать с объектами, созданными в памяти, но я думаю, что он должен работать с экземплярами, сохраненными как файлы ресурсов. Боюсь, что InstanceID может меняться каждый раз, когда я создаю приложение.
У кого-нибудь есть опыт с этим? Лучше ли создать собственный UUID / Hashtable для ссылки на объекты в Unity3D?
Большинство ответов, которые я нашел, предполагают использование пространства имен UnityEditor, но его нельзя использовать в сборках.