Unity截全屏

U3d中的Application.CaptureScreenshot方法,是一截全屏并保存在一张图片的方法
1、它是异步
如果你一定要在,程序中使用Application.CaptureScreenshot,且还要使用它截下的图片时,要注意:图片是在Application.CaptureScreenshot调用完成后一帧或更多久,才要被保存下来的,所以你要在Application.CaptureScreenshot调用完成后的下一要判断图片已经被保存好,才能去使用它。不然你会发现找不到图片的。

2、它保存的路径问题
在pc上可以给它传一个在Application.persistentDataPath下的全路径,
但在android和ios中只能给它传一个在Application.persistentDataPath下的相关路径

3.实现方法示例

/// <summary>
/// 简单截屏的方法
/// </summary>
/// <param name="path"></param>
/// <param name="callback"></param>
/// <returns></returns>
public static IEnumerator CaptureScreenshot(string path, System.Action<bool, string> callback)
{
    // 路径处理
    // 注:path是一个在Application.persistentDataPath全路径
    // Application.persistentDataPath这个方法的参数:
    //      在pc呆传全路径
    //      在android和ios上可能传Application.persistentDataPath下的相关路径

    string newPath = path;
#if !UNITY_EDITOR
    newPath = path.Replace(Application.persistentDataPath + "/", "");
#endif
    //Debugger.Log("CaptureScreenshot path: " + path);
    //Debugger.Log("CaptureScreenshot newPath: " + newPath);
    Application.CaptureScreenshot(newPath);
    float time = Time.time;
    bool b = false;
    yield return new WaitUntil(() =>
    {
        b = System.IO.File.Exists(path);
        return b || ((Time.time - time) > 1f);
    });
    string str = path;
    if (b == false)
    {
        str = "截屏出错!";
    }
    if (callback != null)
    {
        callback(b, str);
    }
}

猜你喜欢

转载自blog.csdn.net/baidu_39447417/article/details/80221288