Unity 截屏功能

正常的截屏

新建一个 Texture2d 初始化大小
然后读取设定屏幕像素区域
转化为二进制 png
设定好文件名称
Field.File.WriteAllBytes(filename, bytes)

  • 这种要注意截屏的坐标 (0,0)坐标原点是屏幕左下角
 IEnumerator CaptureScreenshot()
  {
  //只在每一帧渲染完成后才读取屏幕信息
    yield return new WaitForEndOfFrame();
    Texture2D screenShot = new Texture2D(256,256,TextureFormat.RGB24, false)
    //读取屏幕像素信息并存储为纹理数据
    screenShot.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
    screenShot.Apply();// 这一句必须有,像素信息并没有保存在2D纹理贴图中

    //读取将这些纹理数据,成一个png图片文件
    byte[] bytes = screenShot.EncodeToPNG();
    string filename = Application.dataPath +"/"+Time.time.ToString()+ ".png";

//写入文件 并且指定路径,因为使用该函数写入文件,同名的文件会被覆盖,所以,在路径中使用Time.time只是为了不出现同名文件而已, 没有什么实际的意义,只是当作个测试 
    File.WriteAllBytes(filename, bytes);
    shoot = true;
  }

另一种截屏

获得一张 sprite
new 一个Texture2d = new Textrue2D(sprite.textureRect.height,sprite.textureRect.width)
然后Color[] colorInfos = sprite.texture.GetPixels(x,x,x,x)
再将 colorInfos 装入 Texture2D (使用 texture.SetPixels)) 最后保存
当当当 完成

这里要特别注意 图集里的sprite在使用 getPixels时会报错

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

相关阅读更多精彩内容

友情链接更多精彩内容