Jump to content
Unity Insider Forum

Serialize a List


nordseekrabe

Recommended Posts

Moin, moin,

noch immer kämpfe ich mit der Speicherung meines Projektes. Wie gelingt es bei Serialize einer List, dass alle Listelemente gespeichert werden. Mit folgendem Code wird immer nur der letzte Eintrag gespeichert....nicht Sinn der Sache:

         if (Physics.Raycast(ray, out hit, 20))
                {
                    Inventory.Instance.PlaceItemToInventory(hit.collider.gameObject);
                    puzzle16Genommen = true;
                    DontDestroyOnLoad(gameObject);

                    if (puzzle16Genommen)
                    {
                        allPuzzles.puzzleName = "Puzzle16";
                        allPuzzles.puzzleGenommen = true;
                        takenPuzzles.Add(allPuzzles);
                        anzahlPuzzleTeile += 1;
                    }
                    
                    SaveLoad.Save<List<MyPuzzles>>(takenPuzzles, "TakenPuzzles");
                    SaveLoad.Save<int>(anzahlPuzzleTeile, "AnzahlPuzzles");
                      
                    SaveLoad.Save<int>(takenPuzzles.Count, "NumberOfPuzzles"); //ein Versuch
                }

in der Klasse sind noch deklariert:

public List<MyPuzzles> takenPuzzles = new List<MyPuzzles>();    public MyPuzzles allPuzzles;      public bool puzzle16Genommen;   public int anzahlPuzzleTeile; 

Wo liegt wieder einmal der Fehler. Für gute Ideen bin ich wie immer sehr dankbar.

Nordseekrabbe (Peter)

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 weeks later...

Inzwischen habe ich erarbeitet, dass immer wieder eine neue Liste mit gleichem Namen erstellt wird, daher also beim Speichern nur der letzte Eintrag erscheint. Es gelingt mir nicht, eine einzige Liste, in die bei jedem Add(Objekt) ein weiteres Objekt hinzugefügt wird, zu erstellen.

Hier die Codebereiche:        [Serializable]
                                                public class SaveObject {

                                                          public string objektName;     public bool objektGenommen;
                                                          public SaveObject()   { }

                                                          public SaveObject(string _objektName, bool _genommen)    {
                                                                               objektName = _objektName;
                                                                               objektGenommen = _genommen;      }

  in der Klasse:  [Serializable] public class ObjektNehmen : MonoBehaviour       {  [SerializeField]  List <SaveObject> takenObjects = new List<SaveObject>() }

   Auch in dieser Klasse erfolgen dann die zahlreichen Aufnahmen der Objekte im Prinzip immer nach diesem Schema:

                     if (zimmer == Room.Wohnzimmer)  
            {
                aktionsManager.infoText.text = "Natürlich nimmst du den mit !";

                if (Physics.Raycast(ray, out hit, 20))
                {
                    Inventory.Instance.PlaceItemToInventory(hit.collider.gameObject);
                    Item.VierkantSchluesselGenommen = true;
                    DontDestroyOnLoad(gameObject);

                    if (Item.VierkantSchluesselGenommen == true)
                    {
                        SaveObject vierKant = new SaveObject("vierkantSchluessel", true);
                        takenObjects.Add(vierKant);  // hier liegt wohl der Fehler (?), weil wohl immer eine neue Liste erstellt und die alte überschrieben wird

//for Debug only
                        foreach (SaveObject collectObject in takenObjects)
                        {
                            Debug.Log("In der Liste sind jetzt: " + collectObject.objektName);
                        }
                    }

                    SaveLoad.Save<List<SaveObject>>(takenObjects, "TakenObjects");
                 }

     Trotz zahlreicher Versuche gelingt es mir nicht, die einzelnen Objekte dieser einen Liste hinzuzufügen, die dann mit SaveLoadSave gespeichert werden soll.

Für jeden Tipp und Hinweis bin ich sehr dankbar. Komme einfach nicht weiter und ohne Save&Load kann ich selbst das Ganze nicht durchtesten.

Gruß   Nordseekrabbe (Peter)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...