Hintergrund:
Bei der Verwendung von Unitys JsonUtility kommt es häufig vor, dass komplexe Objekte nicht serialisiert werden können, was dazu führt, dass die geschriebenen Daten leer sind, was nicht besonders einfach zu handhaben ist.Nach Hinweis auf einige Blogs stellen NewtonJson und SimpleJson bessere Lösungen dar. Diesmal verwende ich NewtonJson To Unity-Rucksackdaten speichern und lesen
importiere NewtonJson
Downloadadresse: Newtonsoft.Json-for-Unity
Klicken Sie einfach auf den Download-Link, wenn Sie die Seite nicht öffnen können, benötigen Sie einen Hund (Doge)
Öffnen Sie das heruntergeladene Paket und importieren Sie es in das gewünschte Projekt, importieren Sie einfach alles:
Skript für den Test:
0. Die Hauptfunktion ist
string json= JsonConvert.SerializeObject(variable);
Unter ihnen ist variable ein Objekt, und alle Variablen sind verfügbar. JsonUtility kann die Serialisierung komplexer Objekte nicht abschließen. Dies kann mit der Methode von NewtonJson realisiert werden, was bequemer ist.
1. Datensparklasse DataSaveManager
//挂载到游戏物体中进行测试
public class DataSaveManager :MonoBehaviour
{
public ItemList itemList = new ItemList();
//通过文件名称保存数据到json文件中,存储的路径为persistentDataPath
public void Saver(string fileName)
{
string json= JsonConvert.SerializeObject(itemList);
Debug.Log("内容"+json);
string filepath = Application.persistentDataPath + "/"+ fileName+" .json";
if(!File.Exists(filepath))
{
File.Create(filepath);
Debug.Log(filepath);
}
using(StreamWriter sw = new StreamWriter(filepath))
{
sw.WriteLine(json);
sw.Close();
sw.Dispose();
}
}
//添加物品的的函数
public void Add()
{
ItemSelfs itemSelfs = new ItemSelfs();
itemSelfs.itemID = "1111";
itemSelfs.itemName = "22222222";
itemSelfs.stackAble = true;
itemList.items.Add(itemSelfs);
}
}
2. Item-Klasse ItemSelfs
public class ItemSelfs
{
public string itemName;
public string itemID;
public bool stackAble;
}
3. Verwenden Sie einfach eine Schaltfläche, um die Hinzufügen-Funktion zu überwachen, und der gedruckte Inhalt ist wie folgt
Theorie etabliert, Praxis beginnt
0. Bereiten Sie das UI-Framework im Voraus vor und erstellen Sie es mit einem UP: Freund yaa
1. Das Rucksacksystem umfasst diesmal die folgenden Teile (wir werden in Zukunft den Zugriff auf vernetzte Server, Datenbanken und mobile Endgeräte in Betracht ziehen)
- Rucksack-Datenspeicherungs-Elternklasse: Inventory
- Rucksack-Panel-Elternklasse: ItemPanel
- Benutzeroberfläche und Daten des Rucksackrasters: ItemSlot/ItemSelf
- Artikeldatenverwaltungsklasse: ItemManager
- Datensparklasse: DataSaveManager