Unity截屏功能实现2--读取unity渲染缓存数据

在研究 unity的截屏功能时,网上搜到的实现截屏功能一般就是三个方式:

    1、使用unity引擎自带的截屏API;

    2、读取unity渲染缓存数据的方式;

    3、通过unity相机设置渲染画面。

在这说一下第二种方法实现截屏功能的试验总结:

A、因为这种截屏的方式利用的是界面渲染的缓存数据,所以使用这种方式实现截屏的前提条件是需要在界面渲染完成后才可以调用这个截屏的方法,否则可能会导致界面渲染数据不完整,截屏的图片出现缺失等异常。

B、如果截屏功能要实现截取部分界面的功能,那么在需要明确 Rect 和 Texture2D 区域大小,一般是 Texture2D 的区域小于或者等于 Rect。ReadPixels API 的参数分别是 Rect 的大小以及 x,y 的偏移量,所以当 Texture2D 的长宽大于 Rect 时,读取渲染缓存不成功。

上测试代码

private IEnumerator PrintScreen()

    {

        yield return new WaitForEndOfFrame();

        Rect rect = new Rect((Screen.width - width) / 2, (Screen.height - height) / 2, Screen.width, Screen.height);

        Texture2D screenShot = new Texture2D(width, height);

        screenShot.ReadPixels(rect, 0, 0);

        screenShot.Apply();

        byte[] picBytes = screenShot.EncodeToJPG();

        File.WriteAllBytes(path, picBytes);

    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容