2017-03-17 1 views
2

Ich habe tatsächlich ein Skript erstellt, in dem ich zuerst die Videodatei nach Pfad finde und den gleichen Pfad für die System.IO.File.Exists (filePath) verwendete Die Bedingungen, die ich festlegte, sind P1.GetComponent() .enabled = false ; wenn die Datei existiert und P1.GetComponent() .enabled = true; wenn die Datei nicht existiert und die Referenz P1 (auch andere) erhalten hat. und die Funktion in der Update-Funktion für die kontinuierliche Prüfung aufgerufen hat. Es funktioniert, da es nicht in der Lage ist, die Datei zu finden (der Speicherort der Datei oder des Pfads ist korrekt, habe ich oft überprüft) und gibt true zurück, aber die andere Bedingung funktioniert nicht. Ich habe auch das Debuggen anprobiert App läuft und ich habe dieseDatei existiert Arbeit im Editor, aber nicht im Android-Export gefunden?

6580  6607 I Unity   :  file:///storage/emulated/0/Android/data/com.app.app/cache/folder23/video.mp4 
6580  6607 I Unity   :  
6580  6607 I Unity   : (Filename: ./artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 

zuvor Ich habe auch eine Löschtaste (in Editor und android beide) und es funktioniert mit dem gleichen Weg, aber nicht wissen, was ist der Grund dafür nicht Arbeit beim Export in Android. Hier

ist die Code -

string filePath = "file://" + Application.temporaryCachePath + "/" + "folder23" + "/" + fileName + fileExtension;   

    if (System.IO.File.Exists(filePath)) {              
    Panel.GetComponent<Canvas> ().enabled = false; 
             } 
    else if(!System.IO.File.Exists(filePath)) {   
    Panel.GetComponent<Canvas> ().enabled = true; 
              } 
+1

'filePath =" file: // "+ Anwendung .....'. Datei löschen://. – greenapps

Antwort

1

Wenn ich verstehe, Sie einige Datei unter Application.temporaryCachePath in Editor und Sie nehmen an, es unter diesem Pfad auf dem Gerät sein würde? Das ist eine falsche Annahme. Wenn Sie "externe" Dateien (keine Projekt-Assets) verwenden möchten, haben Sie zwei Möglichkeiten.

  1. Erstellen Sie "Ressourcen" Ordner in Ihrem Assets Ordner und legen Sie das Video dort. Sie müssen die Erweiterung leider auf ".bytes" oder eine andere von Here ändern, die Unity als Ressourcen-Asset lesen kann. Dann können Sie es laden mit TextAsset bin = Resources.Load("video") as TextAsset; Beachten Sie, dass Sie diesen Ordner auf dem Gerät nicht unter Application.dataPath + "Ressourcen" oder einem anderen Pfad finden. Es wird von Unity verarbeitet und in Build gepackt. Die einzige Möglichkeit, Dateien von dort zu laden, ist die Ressourcenklasse.

  2. Eine andere Möglichkeit besteht darin, den Ordner "StreamingAssets" im Ordner "Assets" zu erstellen. Dies ist ein spezieller Ordner, der in den Build 'Raw' eingeht. Alles, was Sie dort eingeben, wird unter Application.streamingAssetsPath unverändert in Build umgewandelt. Unter Android ist es jedoch etwas komplizierter, da streamingAssetsPath auf die .apk-Datei verweist und Sie die Datei zuerst aus der apk extrahieren müssen. Here is described how to do that. Ich würde dir eher empfehlen, Ressourcen zu verwenden.

+0

danke für die Antwort. Hier ist der Speicherort des Application.temporaryCachePath (ich entferne "file: //" für den Editor) wie oben. In dieser App lade ich zuerst die Datei herunter oder schreibe sie so, dass sie kein Streaming-Asset verwenden kann. Sie haben Recht, dass es in der App selbst erstellt wurde, deshalb habe ich das für das Videoverzeichnis verwendet. – Deadking66

+0

Okay dann. Also, ich nehme an, es muss dann ein Problem mit Ihrer Download & Save-Methode sein. Sind Sie sicher, dass die Datei ordnungsgemäß auf dem Gerät gespeichert wurde? Können Sie den Code anzeigen, der für das Schreiben der heruntergeladenen Datei auf dem Gerät verantwortlich ist? – piotrmitrega

Verwandte Themen