2012-07-30 9 views
5

mio codice vero e proprio:Ho bisogno di impostare il percorso per il salvataggio delle immagini con un'applicazione per Android e IOS con Unity

function Update() { 
    if(Input.GetMouseButtonDown(0)) { 
     Debug.Log("foto"); 
     Application.CaptureScreenshot(Application.dataPath + "Screenshot.png"); 
    } 
} 

Ho bisogno il percorso per l'uscita di ogni foto per questa funzione.

Grazie!

+0

Il tag è l'unità per Microsoft Unità. Si prega di non abusare di esso. –

+0

Hai trovato la soluzione per questo problema? – Sona

risposta

1

È possibile salvare i file su Application.persistentDataPath. Le app Unity non hanno permessi di scrittura su Application.dataPath su dispositivi Android o iOS.

Inoltre, non dimenticate di partecipare al percorso e il nome della cartella con una barra:

Application.CaptureScreenshot(Application.persistentDataPath + "/Screenshot.png"); 
+1

ho provato il tuo codice. Ma non si salva in Application.persistentDataPath in Android. perché succede così? – Sona

0

Application.persistentDataPath di unità punti sempre verso la cartella documenti in IOS ea /mnt/android/data/application-bundle-identifier/ per android.

E se non si specifica il percorso per Application.CaptureScreenshot, inserire invece solo il nome per lo screenshot che verrà automaticamente salvato nella cartella Documenti di IOS non testato per android.

Spero che questo aiuti.

0
static function CaptureScreen(){ 
var filename; 
var name :String = GuiScript.stringToEdit; 
var allowedScreenshots:int=1000; 
for(var i = 0; i <= allowedScreenshots; i++) 
    { 

     if(Application.platform == RuntimePlatform.Android){ 
      filename = "/mnt/sdcard/Android/data/com.xxxx.Test01/files/" + name + i + ".png"; 
     } else {    
      filename = name + i + ".png"; 
     } 
     if(!System.IO.File.Exists(filename)) 
     { 
      Application.CaptureScreenshot(name + i + ".png"); 
      print("ScreenDUMP made!"); 
      print(i); 
      print(name); 

      return; 
     } 
     else 
     { 
      print("filename already exists"); 
      print(i); 
     } 
    } 
} 
0

Ci sono almeno 3 ways per il salvataggio di un qualche tipo di screenshot con Unity3D: Application.CaptureScreenshot, Texture2D.ReadPixels e RenderTexture.

Conosco solo il primo: Application.CaptureScreenshot. È sicuramente il più semplice. Non prende traccia e salverà in Application.persistentDataPath o Application.dataPath + "/../", a seconda della piattaforma. Sfortunatamente al momento non c'è modo di saperlo con certezza o solo tramite codice - è solo rotto in quel modo. Inoltre, è lento e potrebbe richiedere alcuni secondi per l'elaborazione. Funziona come un processo separato, quindi dovresti avere un aggiornamento o una Coroutine in attesa che il file venga creato prima di usarlo per qualsiasi cosa.

Se si vuole scegliere dove il file verrà salvato con essa, è necessario fare qualcosa di simile:

bool creatingFile = false; 
string fileName = "Screenshot.png" 
function Update() { 
    if(Input.GetMouseButtonDown(0)) { 
     Application.CaptureScreenshot(fileName); 
     creatingFile = true; 
    } 
    if (creatingFile) { 
     string origin = System.IO.Path.Combine(Application.persistentDataPath, fileName); 
     string destination = "/sdcard/ScreenCapture/" + fileName; // could be anything 
     if (System.IO.File.Exists(origin)) { 
      System.IO.File.Move(origin, destination); 
      creatingFile = false; 
     } 
    } 
} 
+0

Ma se vuoi salvarlo in modo che venga mostrato nella galleria, avrai più problemi a farlo. Non è un compito semplice: http://answers.unity3d.com/questions/204372/saving-screenshots-to-android-gallery.html – cregox

Problemi correlati