我需要设置的路径与Android和iOS应用程序中使用UNITY保存图片(I need to set

2019-06-26 15:17发布

我的实际代码:

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

我需要为每一张照片这个函数的输出路径。

谢谢!

Answer 1:

您可将文件保存到Application.persistentDataPath 。 统一的应用程序没有写权限Application.dataPath Android或iOS设备。

另外,不要忘记加入的路径和正斜杠的文件夹名称:

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


Answer 2:

至少有3种方式来保存某种截图与Unity3D: Application.CaptureScreenshotTexture2D.ReadPixelsRenderTexture

我只知道第一个: Application.CaptureScreenshot 。 这是肯定的最简单的一种。 它并不需要的路径,它会保存到Application.persistentDataPathApplication.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;
        }
    }
}


Answer 3:

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


Answer 4:

Application.persistentDataPath统一始终对文件夹点在IOS/mnt/android/data/application-bundle-identifier/android

如果你不给的路径, Application.CaptureScreenshot放,而不是只给出了截图,它会自动获得保存的文档文件夹的名称IOS没有测试的android

希望这可以帮助。



文章来源: I need to set the path for saving the pictures with an application for Android and IOS with UNITY