Necesito establecer la ruta para guardar las imágenes con una aplicación para Android e IOS con UNITY

Mi código actual:

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

Necesito el camino para la salida de cada foto para esta función.

¡Gracias!

Puede guardar archivos en Application.persistentDataPath . Las aplicaciones de Unity no tienen permisos de escritura para Application.dataPath en dispositivos Android o iOS.

Además, no olvide unir la ruta y el nombre de la carpeta con una barra inclinada:

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

Hay al menos 3 maneras de guardar algún tipo de captura de pantalla con Unity3D: Application.CaptureScreenshot , Texture2D.ReadPixels y RenderTexture .

Sólo sé sobre el primero: Application.CaptureScreenshot . Es seguro el más simple. No toma rutas y se guardará en Application.persistentDataPath o Application.dataPath + "/../" , dependiendo de su plataforma. Desafortunadamente no hay ninguna manera de saber con seguridad o con código solamente – es apenas roto de esa manera. Además, es lento y puede tardar algunos segundos en procesarse. Se ejecuta como un proceso separado por lo que debe tener una actualización o una Coroutine esperando que el archivo se cree antes de usarlo para cualquier cosa.

Si desea elegir dónde se guardará el archivo con él, debe hacer algo como esto:

 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; } } } 
 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); } } } 

Application.persistentDataPath de la unidad siempre apunta hacia la carpeta de documentos en IOS y /mnt/android/data/application-bundle-identifier/ para android .

Y si no le das la ruta para Application.CaptureScreenshot poner en lugar de dar sólo el nombre de la captura de pantalla que se guardará automáticamente en la carpeta Documentos de IOS no han probado para android .

Espero que esto ayude.

  • ¿Por qué llamar a Process.killProcess (Process.myPid ()) es una mala idea?
  • Casquillo de extremo redondeado 2d líneas en unidad5
  • Android deslizar y agregar unidad de fuerza
  • Unity 2D: ¿Cómo soportar plataformas múltiples y diferentes dispositivos de relación de aspecto en Unity 2D?
  • Prácticas recomendadas para guardar el juego cuando el usuario ha salido de Google Play Services?
  • Screen Recorder Plugin para Android en Unity
  • Compruebe la conexión a Internet desde Unity
  • AndroidJNIClass no puede excute mi función no estática
  • Cómo acceder al enum en Unity AndroidJavaClass
  • Reconocimiento de voz en Unity Game Engine
  • Establecer gravedad para LinearLayout mediante programación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.