2016-07-25 6 views
2

Ich habe eine Reihe von JSON-Dateien in meinem Projekt, die ich verwende, um Ebenen zu laden. Ich bin mir jedoch nicht sicher, wo ich den Weg für sie finden könnte. Sie befinden sich in Assets/Ressourcen/LevelsData in meinem Projekt.Problem mit dem Dateipfad beim Erstellen für iOS Unity

Ich habe versucht Application.dataPath + "Assets/Resources/LevelsData/", aber das scheint nicht zu erscheinen. Kann mir jemand sagen, wo es mit Application.dataPath gefunden werden könnte? Wie füge ich nach dem Aufruf von Application.dataPath hinzu, um zum Ordner "Assets" zu gelangen? Oder ändert sich die Dateistruktur des Projekts, wenn ich es auf iOS ausführe?

Antwort

1

Sie kann nicht Verwendung Application.dataPath + "/Assets/Resources/LevelsData/, wenn die Dateien in den Ordner Ressourcen platziert werden. Dies liegt daran, dass Unity die Dateien in Binärform codiert und sie ebenfalls umbenennt. Dateien im Ordner Resources müssen mit Resources.Load gelesen werden.

Sie benötigen Resources.Load und TextAsset.

Unterstützte TextAsset Formate:

.txt .html HTM .xml .bytes .json .csv .yaml .fnt

Jetzt wollen wir lesen ein Ihre JSON-Dateien mit der Bezeichnung JsnFile1.json in Assets/Resources/LevelsData/.

void Start() 
{ 
    string jsonFileDir = "LevelsData/JsnFile1"; 
    TextAsset jsonFile = Resources.Load(jsonFileDir, typeof(TextAsset)) as TextAsset; 
    Debug.Log(jsonFile.text); 
} 

Beachten Sie, dass Sie nicht die Erweiterung der Datei in Resources.Load Funktion platziere. Wenn Sie das tun, wird es fehlschlagen.

Laden wir ein vorgefertigtes GameObject namens Bullet in Assets/Resources/LevelsData/.

void Start() 
{ 
    string objDirFileDir = "LevelsData/Bullet"; 
    GameObject jsonFile = Resources.Load(objDirFileDir, typeof(GameObject)) as GameObject; 
    Debug.Log(jsonFile.name); 
} 
+0

Der Ordner Ressourcen ist eine, die ich erstellt habe. Ist Ihre Lösung davon abhängig, wo sich die jeweiligen Dateien befinden? Wenn das der Fall ist, würde ich sie lieber woanders platzieren und meine aktuelle Ladeform verwenden. –

+0

Update: versucht, diese Dateien in einen anderen Ordner zu verschieben, hat nicht funktioniert –

+0

@MihaiStan Nein und nein. Ihre Dateien müssen sich im Verzeichnis Assets/Resources/LevelsData befinden, damit sie funktionieren. Ich habe nie gesagt, du solltest sie bewegen.Setzen Sie sie zurück, wo sie in Ihrer Frage waren und ersetzen Sie einfach 'JsnFile1' durch den Namen einer Ihrer Dateien. Fügen Sie den Namen der Erweiterung nicht ein. Dies wurde vor der Veröffentlichung getestet und sollte funktionieren. Sie sollten alle unter 'Assets/Resources/LevelsData' platziert werden. – Programmer

0

Application.DataPath gibt Ihnen "/ Assets", so dass Sie

Application.dataPath + "/Resources/LevelsData/" 

EDIT verwenden

für IOS es sagt dies auf Dokumentationsseite:

iOS-Player : // Daten (dieser Ordner ist schreibgeschützt, verwenden Sie Application.pers IstentDataPath zum Speichern von Daten).

+0

Funktioniert nicht. Anscheinend gibt es nur "/ Assets" im Editor. –

+0

Überprüfen Sie die Doc-Seite, die ich als Antwort verknüpft habe. –

+0

Ich hatte es schon gelesen, aber es ist nicht klar für mich. Vielen Dank trotzdem –