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;
}
}
}
Il tag è l'unità per Microsoft Unità. Si prega di non abusare di esso. –
Hai trovato la soluzione per questo problema? – Sona