Unity verwendet NewtonJson zum Speichern von Daten und Rucksacksystem zum Speichern von Daten (wird aktualisiert)

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

 

おすすめ

転載: blog.csdn.net/SuShengQuanshiW/article/details/128764943