2017-11-27 3 views
0

Gibt es eine Möglichkeit zum Abrufen der Datei, die ein BinaryWriter erstellt und verwandelt es in ein TextAsset oder Objekt?Unity Editor - Von BinaryWriter zu Object oder TextAsset

ich einen benutzerdefinierten Editor für mein Projekt zu schaffen, hat es eine Option, eine neue Binär-Datei zu erstellen: enter image description here

Das Feld ‚Datei‘ für den Benutzer eine vorhandene Datei zu ziehen, aber der Benutzer kann einen neuen erstellen, indem ich auf die Schaltfläche "Create New File" klicke und im Idealfall möchte ich, dass die neu erstellte Datei automatisch in das Feld "File" gestellt wird.

EDITED: So viel wie möglich möchte ich vermeiden, die Binärdatei in den Ressourcenordner zu speichern und dann zu laden und in ein TextAsset zu konvertieren.

Vielen Dank im Voraus!

Antwort

2
  1. Speichern Sie die neue Text-Datei verwendet Binary in den Resources Ordner. (Erstellen Sie in Ihrem Arbeitsbereich, wenn es keine)

2.a) Holen Sie die Datei als TextAsset über

TextAsset textFile = (TextAsset)Resources.Load("myTextFile"), typeof(TextAsset)); 

2.b) Alternativ versuchen dies die kürzlich erstellte Datei zu laden :

AssetDatabase.ImportAsset(path); // Update/Reload File in Unity 
TextAsset asset = Resources.Load("myTextFile"); 
  1. Assign Textdatei an die öffentliche Variable File in Ihrem Skript Editor für benutzerdefinierte.

Wenn Sie keine Ressourcen Ordner möchten, versuchen Sie dies:

AssetDatabase.LoadAssetAtPath

Hinweis: AssetDatabase.Refresh() Updates Dateikatalog Unity, also war ich mit ImportAsset falsch. Siehe Kommentare unten.

+0

Danke für Ihre schnelle Antwort KYL3R. Nicht sicher, was genau "Test" in Resources.Load ist. Es scheint, dass es den Weg nimmt. Also übergab ich den Pfad, den ich benutze, um die Datei zu erstellen, aber das gibt null zurück (nach dem Umwandeln von Objekt in TextAsset). Wie hängen AssetDatabase und Ressourcen zusammen? Schließlich möchte ich, wenn möglich, vermeiden, diese Dateien im Ordner Ressourcen zu erstellen. – Cris

+0

Der AssetDatabase-Aufruf aktualisiert die Datei in Unity. Damit kann es als TextAsset gefunden werden. Sie können die [WWW] (https://docs.unity3d.com/ScriptReference/WWW.html) Klasse verwenden, um von der Festplatte (außerhalb des Ressourcenordners) zu laden - aber das wird Ihnen keinen textAsset geben. Ich habe eine andere mögliche Lösung "LoadAssetAtPath" hinzugefügt, siehe meine Antwort. – KYL3R

+0

Danke eine Million KYL3R !! Also habe ich zuerst versucht, wie es in der Unity-Dokumentation erscheint, aber es hat nicht geklappt, und dann habe ich eine etwas andere Art gefunden, die den Trick gemacht hat - das ist die magische Linie: Objekt o = AssetDatabase.LoadAssetAtPath (Pfad, (typeof (Objekt))) als Objekt; – Cris

Verwandte Themen