2016-04-10 12 views
0

Ich entwickle ein WebGL-Projekt in Unity, das einige externe Bilder aus einem Verzeichnis laden muss, es läuft alles gut im Editor, aber wenn ich es erstelle, löst es eine Directory Not Found-Ausnahme im Web Konsole. Ich lege die Bilder in den Ordner "Assets/StreamingAssets", der im Build-Projekt zum Ordner "StreamingAssets" wird (im Root-Verzeichnis, wie bei index.html). Bilder befinden sich dort, aber der Browser beschwert sich immer noch, dass er das Verzeichnis nicht finden kann. (Ich öffne es auf meinem eigenen Computer, kein laufender Webserver)Unity WebGL Externe Assets

Ich denke, ich vermisse etwas sehr offensichtliches, aber es scheint, dass ich etwas Hilfe gebrauchen könnte, ich habe vor einer Woche angefangen, Einheit zu lernen , und ich bin nicht so toll mit C# oder JavaScript (Ich versuche, besser zu werden ...) Ist das irgendwie mit einigen Javascript-Sicherheitsproblemen verbunden?

Könnte mir bitte jemand in die richtige Richtung zeigen, wie ich in Unity WebGL Bilder lesen soll (kein Schreiben nötig)?

string appPath = Application.dataPath; 
string[] filePaths = Directory.GetFiles(appPath, "*.jpg"); 

Nach unity3d.com in WebGL baut alles außer Einfädeln und Reflexion unterstützt wird, so sollte IO arbeiten werden - oder so dachte ich: S

Ich war ein wenig herum zu arbeiten und jetzt bin ich versuchen, eine Textdatei, die die Pfade der Bilder zu laden, die (getrennt durch ‚;‘):

TextAsset ta = Resources.Load<TextAsset>("texManifest"); 
    string[] lines = ta.text.Split(';'); 

Dann konvertiere ich alle Zeilen richtigen Weg, und fügen sie sie in eine Liste:

string temp = Application.streamingAssetsPath + "/textures/" + s; 
    filePaths.Add(temp); 

debug.log mir sagt, es sieht wie folgt aus:

Datei: //////Downloads/FurnitureDresser/build/StreamingAssets/textures/79.jpg

das scheint also außer zu allright für alle, die Schrägstriche (das sieht ein wenig seltsam für mich)

Und schließlich die Textur erstellen:

WWW www = new WWW("file://" + filePaths[i]); 
    yield return www; 
    Texture2D new_texture = new Texture2D(120, 80); 
    www.LoadImageIntoTexture(new_texture); 

Und um diesen letzten Teil (nicht sicher: webgl Projekte scheint nicht leicht debug) es sagt me: NS_ERROR_DOM_BAD_URI: Zugriff auf eingeschränkte URI verweigert

Kann mir bitte jemand aufklären, was passiert? Und vor allem, was wäre die richtige Lösung, um ein Verzeichnis zu erstellen, aus dem ich Bilder zur Laufzeit laden kann?

Antwort

0

Setzen Sie Ihr Bild in den Ordner Resources und verwenden Sie Resources.Load, um die Datei zu öffnen und zu verwenden.

Zum Beispiel:

Texture2D texture = Resources.Load("images/Texture") as Texture2D; 
if (texture != null) 
{ 
    GetComponent<Renderer>().material.mainTexture = texture; 
} 

Die Verzeichnisliste und Datei-APIs sind nicht in webgl baut.

Grundsätzlich werden keine Low-Level-IO-Operationen unterstützt.

+0

Ich muss in der Lage sein, den Inhalt des Ordners zu ändern, ohne das Projekt neu zu erstellen. Jetzt versuche ich eine Textdatei zu erstellen, die als Manifest aller Bilder fungiert. Ich lade diese Textdatei (als Ressource - textasset) und lade die Bilder aus den aus der Textdatei erhaltenen Pfaden. Allerdings gibt es mir NS_ERROR_DOM_BAD_URI: Zugriff auf eingeschränkte URI verweigert. Ich werde der Frage noch etwas Code hinzufügen, vielleicht hilft das ein bisschen. –

+0

Danke für die Hilfe Doug, es scheint, dass meine Kopfschmerzen durch das Präfix Datei: // verursacht wurde ... –