5

我的实际代码:

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

我需要此功能的每张照片的输出路径。

谢谢!

4

4 回答 4

1

您可以将文件保存到Application.persistentDataPathApplication.dataPathUnity 应用程序在 Android 或 iOS 设备上没有写入权限。

另外,不要忘记用正斜杠连接路径和文件夹名称:

Application.CaptureScreenshot(Application.persistentDataPath + "/Screenshot.png");
于 2012-08-08T21:10:55.933 回答
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);
        }
    }
}
于 2012-08-27T12:39:43.270 回答
0

Application.persistentDataPathof unity 总是指向文件文件夹 inIOS和 to /mnt/android/data/application-bundle-identifier/for android

如果您不提供Application.CaptureScreenshotput 的路径,而只提供屏幕截图的名称,它将自动保存在IOS尚未测试的 Documents 文件夹中android

希望这可以帮助。

于 2012-08-22T04:44:41.213 回答
0

使用 Unity3D 保存某种屏幕截图至少有3 种方法Application.CaptureScreenshotTexture2D.ReadPixelsRenderTexture.

我只知道第一个:Application.CaptureScreenshot。这肯定是最简单的一个。它不采用路径,它会保存到Application.persistentDataPathor 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;
        }
    }
}
于 2012-12-12T18:23:08.760 回答