我的实际代码:
function Update() {
if(Input.GetMouseButtonDown(0)) {
Debug.Log("foto");
Application.CaptureScreenshot(Application.dataPath + "Screenshot.png");
}
}
我需要此功能的每张照片的输出路径。
谢谢!
我的实际代码:
function Update() {
if(Input.GetMouseButtonDown(0)) {
Debug.Log("foto");
Application.CaptureScreenshot(Application.dataPath + "Screenshot.png");
}
}
我需要此功能的每张照片的输出路径。
谢谢!
您可以将文件保存到Application.persistentDataPath。Application.dataPath
Unity 应用程序在 Android 或 iOS 设备上没有写入权限。
另外,不要忘记用正斜杠连接路径和文件夹名称:
Application.CaptureScreenshot(Application.persistentDataPath + "/Screenshot.png");
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
of unity 总是指向文件文件夹 inIOS
和 to /mnt/android/data/application-bundle-identifier/
for android
。
如果您不提供Application.CaptureScreenshot
put 的路径,而只提供屏幕截图的名称,它将自动保存在IOS
尚未测试的 Documents 文件夹中android
。
希望这可以帮助。
使用 Unity3D 保存某种屏幕截图至少有3 种方法Application.CaptureScreenshot
:Texture2D.ReadPixels
和RenderTexture
.
我只知道第一个:Application.CaptureScreenshot
。这肯定是最简单的一个。它不采用路径,它会保存到Application.persistentDataPath
or Application.dataPath + "/../"
,具体取决于您的平台。不幸的是,目前无法确定或仅通过代码知道 - 它只是以这种方式破坏。此外,它很慢,可能需要几秒钟的时间来处理。它作为一个单独的进程运行,因此您应该有一个更新或协程等待文件被创建,然后再将其用于任何事情。
如果您想选择将文件保存在哪里,您需要执行以下操作:
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;
}
}
}