Jump to content
Unity Insider Forum

Prefab per Skript finden und laden


STU

Recommended Posts

Hi zusammen,

ich erstelle während des Spiels neue Prefabs die ich speichere.

...

PrefabUtility.SaveAsPrefabAssetAndConnect(Weapon, localPath, InteractionMode.UserAction);

 nun möchte ich diese Später wieder laden. Also nicht über den Inspector sondern direkt über den Pfad und den Namen des Prefabs. 

Kann mir jemand sagen wie das funktioniert?

 

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Sascha,

ja das stimmt leider. Es funktioniert nicht im Build 😟

Was ich gerne machen würde ist mir während dem Spiel Waffen aus verschiedenen Einzelteilen zu bauen. Diese dann zu speichern und später wieder laden. Dazu habe ich erst gedacht dass ich die Waffe (GameObject) als Prefab speichere und dann mit instantiate später wieder lade. Aber anscheinend funktioniert dass so nicht. Kann man GameObjects überhaupt im Build speichern?

Ich überlege gerade ob man das irgendwie mir "List" machen sollte und dann die Waffe jedes mal aus den Einzelteilen neu erzeugen zu lassen. Oder wie würdet ihr das elegant lösen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Prefabs kannst du leider nicht zur Laufzeit bauen. Ergibt aber auch nicht viel Sinn, denn Prefabs sind einfach nur GameObjects, die im Assets-Ordner liegen. Den Assets-Ordner gibt's ja aber im Build gar nicht.

Wenn du etwas im Spiel speichern willst, dann musst du entweder PlayerPrefs oder ein anderes Speichersystem nutzen. Die guten alten Json-/Yaml-/Sonstwas-Dateien bieten sich da immer an.

Und ja, eine Liste zu haben und dann die Indizes von Objekten auf dieser Liste zu speichern kann funktionieren. String-IDs sind da aber etwas sicherer, weil die nicht kaputt gehen, wenn sich die Liste zu krass ändert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

danke schonmal für die schnelle Antwort.

Ich würde das ganze jetzt mal mir Json versuchen und habe mal etwas rumprobiert. Wie kann ich die Liste wieder auslesen. Wenn ich es mit Debag.Log versuche kann ich mir die "int" anzeigen lassen. Bei List steht aber immer Null, obwohl ich in der lokalen Datei auf dem Rechner nachgeschaut habe. Dort wurde es gespeichert.

 public void JsonDataSave()
    {
        var jsonFile = new EasyFile("myJsonData_V3.json");

        var jsonData = new EasyFile.Json();

        var weaponObjects = new EasyFile.Json();
        weaponObjects.AddValue("body", bodyParts);
        weaponObjects.AddValue("barrel", barrelParts);
        weaponObjects.AddValue("stock", stockParts);
        weaponObjects.AddValue("scope", scopeParts);
        weaponObjects.AddValue("magazine", magazineParts);
        weaponObjects.AddValue("grip", gripParts);

        jsonData.AddValue("simple_array", new List<int> { 1, 4, 8 });



        var weaponValue = new EasyFile.Json();
        weaponValue.AddValue("damage", Damage);
        weaponValue.AddValue("accuracy", Accuracy);
        weaponValue.AddValue("ammoPerClip", AmmoPerClip);
        weaponValue.AddValue("reloadSpeed", ReloadSpeed);
        weaponValue.AddValue("fireRate", FireRate);
        weaponValue.AddValue("rarityLevel", RarityLevel);

        jsonData.AddJson("WeaponObjects", weaponObjects);
        jsonData.AddJson("weaponValue", weaponValue);




        jsonFile.SaveJson(jsonData);
    }

    public void JsonDataLoad()
    {
        var jsonFile = new EasyFile("myJsonData_V2.json");

        var jsonData = new EasyFile.Json();
        jsonData = jsonFile.LoadJson();


        var wep = jsonData.GetJson("WeaponObjects");
        var val = jsonData.GetJson("weaponValue");

          
        var myArray = jsonData.GetValue<List<int>>("simple_array");
        Debug.Log(myArray);

        Debug.Log(wep.GetValue<int>("body"));
        Debug.Log(val.GetValue<int>("damage"));



    }

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mittlerweile habe ich es hinbekommen und kann jetzt auch das ganze in einem Build bewerkstelligen und speichern. 😃 

@chrische5: Danke für den Tipp, aber das geht in diesem Fall nicht da es durch die vielen Einzelteile ja mehrere 1000 Möglichkeiten gibt wie die Waffe aussehen könnte 😅

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...