Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему JsonUtility.ToJson() выдаёт {}? C#, Unity.

Мемы-Про-Экскалибур И-Не-Только Ученик (119), на голосовании 4 месяца назад
 using System.Collections;
using System.IO;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class JsonSaveSystem : MonoBehaviour
{
public List obj;

[SerializeField] private Inventory[] objs;
[SerializeField] private List pos;
private string path;
possave ps;
void Start()
{
while(obj.Count > pos.Count)
{
pos.Add(ps);
}
path = Path.Combine(Application.persistentDataPath, "data.json");
Load();
}

void Update()
{
if(obj.Count > pos.Count)
{
pos.Add(ps);
}
}

public void Load()
{
if(File.Exists(path))
{
pos = JsonUtility.FromJson>(File.ReadAllText(path));
for(int i = 0; i < objs.Length; i++)
{
for(int k = 0; k < obj.Count; k++)
{
if(objs[i].ID == pos[k].ID)
{
Destroy(obj[k]);
obj[k] = Instantiate(objs[i].obj, new Vector3(pos[k].x, pos[k].y, pos[k].z), Quaternion.identity);
}
}
}
}
else
{
File.Create(path);
}
}
public void Save()
{
for(int i = 0; i < obj.Count; i++)
{
pos[i].x = obj[i].transform.position.x; pos[i].y = obj[i].transform.position.y; pos[i].z = obj[i].transform.position.z;
pos[i].ID = obj[i].GetComponent().obj.ID;
File.WriteAllText(path, JsonUtility.ToJson(pos));
Debug.Log(JsonUtility.ToJson(pos));
}

}
}
Голосование за лучший ответ
Иван Сигаев Искусственный Интеллект (154163) 5 месяцев назад
class possave поддерживает сериализацию?
Мемы-Про-Экскалибур И-Не-ТолькоУченик (119) 5 месяцев назад
Да, до этого, этот скрипт сохранял один объект, но когда я переделал его под массив объектов, он стал записывать лишь {}.
Иван Сигаев Искусственный Интеллект (154163) Тогда попробуй использовать враппер
   
[System.Serializable] 
public class JsonableListWrapper 
{ 
    public List list; 
    public JsonableListWrapper(List list) => this.list = list; 
} 
А там где сохранять
 // To Json 
string stringListAsJson = JsonUtility.ToJson(new JsonListWrapper(pos)); 

// From Json 
List stringListFromJson = JsonUtility.FromJson>(stringListAsJson).list; 
  
Jurijus Zaksas Искусственный Интеллект (445791) 5 месяцев назад
 [Serializable]
public class SaveClass: List {}
...

private SaveClass pos;
Похожие вопросы