Es gibt mindestens 3 ways für eine Art Screenshot mit Unity3D Sparend: Application.CaptureScreenshot
, Texture2D.ReadPixels
und RenderTexture
.
Ich kenne nur die erste: Application.CaptureScreenshot
. Es ist sicher das Einfachste. Es nimmt keine Pfade und speichert je nach Plattform Application.persistentDataPath
oder Application.dataPath + "/../"
. Leider gibt es derzeit keine Möglichkeit, sicher oder durch Code zu wissen - es ist nur auf diese Weise gebrochen. Außerdem ist es langsam und es kann einige Sekunden dauern zu verarbeiten. Es läuft als ein separater Prozess, so dass Sie ein Update oder eine Coroutine warten müssen, bevor die Datei für irgendetwas erstellt wird.
Wenn Sie wählen möchten, wo die Datei mit der sie gespeichert wird, müssen Sie so etwas wie dies tun:
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;
}
}
}
Die Einheit-Tag ist für Microsoft Unity. Bitte missbrauche es nicht. –
Haben Sie eine Lösung für dieses Problem gefunden? – Sona