通过unity内置的截图功能,也有几种方法:

1,通过Application.CaptureScreenshot来截图,这种方式最简单,一行代码搞定,缺点也很明显,比如不能选择区域,不能选择图片格式,不能屏蔽某些对象等等;

2,通过Texture2D.ReadPixels来读取屏幕区域像素,然后通过EncodeToJPG/EncodeToPNG编码,最后创建文件保存,步骤繁琐,但可控性更高;(注意这个 的协程  必须在 OnGUI 中调用才可以)

3,通过一个RenderTexture渲染相机内容,然后读取RenderTexture的像素,然后用2.2的方式实现截图,可控性更高,可以增加各种效果,可以实现屏蔽等功能;

账号Unity提供了这个游戏截屏的功能, 现在我们就来实现一下这个东东吧。

Application.CaptureScreenshot
static void CaptureScreenshot(string filename, int superSize = 0);

文件默认被保存在这个路径:persistent data path

那么图片我们存储在哪里呢? 在移动设备上的路径,我们有一下几种:

Application.dataPath:
此属性用于返回程序的数据文件所在文件夹的路径。例如在Editor中就是Assets了。
Application.streamingAssetsPath:
此属性用于返回流数据的缓存目录,返回路径为相对路径,适合设置一些外部数据文件的路径。
Application.persistentDataPath:
此属性用于返回一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件。这个路径是可读可写的
Application.temporaryCachePath:
此属性用于返回一个临时数据的缓存目录。

android平台

Application.dataPath:
/data/app/xxx.xxx.xxx.apk
Application.streamingAssetsPath:
jar:file:///data/app/xxx.xxx.xxx.apk/!/assets
Application.persistentDataPath:
/data/data/xxx.xxx.xxx/files
Application.temporaryCachePath:
/data/data/xxx.xxx.xxx/cache

IOS平台
Application.dataPath:
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data
Application.streamingAssetsPath:
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw
Application.persistentDataPath:
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
Application.temporaryCachePath:
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Library/Caches

我们就是在游戏界面中绘制一个Button(位置要选择好不要碍事), 这个脚本最好是 永远不被销毁的,这样就可以一直可用了。

单击按钮就及时的捕捉到问题的画面就OK了。

(我以前在这篇文章中也写过类似的代码了:http://blog.csdn.net/u010019717/article/details/43113305)

[csharp] view plain copy

  1. using UnityEngine;
  2. using System.Collections;
  3. using System;
  4. /// <summary>
  5. /// 用于对游戏的画面进行捕捉,就是截屏
  6. /// 测试可以使用,对问题捕捉下来
  7. /// </summary>
  8. public class ScreenShoter : MonoBehaviour
  9. {
  10. public string filePath  = Application.dataPath;
  11. void Awake()
  12. {
  13. DontDestroyOnLoad(transform.gameObject);
  14. }
  15. void OnGUI()
  16. {
  17. if (GUI.Button(new Rect((Screen.width - 60) * 0.5f, 0, 60, 30), "截屏"))
  18. {
  19. Application.CaptureScreenshot(string.Format("{0}\\ss_{1}x{2}_{3}.jpg",
  20. filePath, Screen.width, Screen.height, System.DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds));
  21. }
  22. }
  23. }

CaptureScreenshot捕捉画面截图截屏相关推荐

  1. ARFoundation入门教程U2-AR场景截图截屏

    ARFoundation入门教程U2-AR场景截图截屏 <ARFoundation入门教程U1-android权限申请和配置升级>配置了android权限申请,获取权限后使用代码截屏,AR ...

  2. 怎么用计算机截图快捷键,电脑怎么截图截屏 电脑截图的快捷键是什么

    电脑怎么截图截屏 电脑截图的快捷键是什么 来源:www.18183.com作者:皮卡时间:2015-10-23 很多人打开电脑的时候就会习惯性的登上各类社交应用,例如QQ.阿里旺旺.微博客户端等,这些 ...

  3. mac录屏快捷键 - mac截图截屏快捷键 - 自带录屏软件QuickTime Player如何使用

    mac截图截屏快捷键 全屏截图 command + shift + 3 (截图文件自动保存到桌面) 区域截图 command + shift + 4  再用鼠标框选截图范围(截图文件自动保存到桌面) ...

  4. 荣耀android手机怎么截图,华为荣耀畅玩5C怎么截图/截屏方法教程

    华为荣耀畅玩5C怎么截图/截屏方法教程 来源:www.18183.com作者:皮卡时间:2016-04-29 作为荣耀今年的首款开年作品,该机受到了很多用户们的关注,而小编也相信有不少花粉们已经入手了 ...

  5. 截图截屏小工具Snipaste简单易用

    截图截屏小工具Snipaste简单易用 百度网盘地址:https://pan.baidu.com/s/195T96Al-plXSxXezTdybqg

  6. 树莓派(Raspberry Pi)中如何截图截屏(截图)

    树莓派(Raspberry Pi)中截图截屏(截图) 需要使用scrot软件,在Raspberry Pi OS安装过程中,如果你选择的是Raspberry Pi OS with Desktop and ...

  7. 七种影视截图截屏小方法

    方法一: Windows Media Player10 首先介绍,最简单的视频截图方法.Media Player10是常用的视频播放器,也可以视频截图.我们在播放电影的过程中,遇到想截取的图片,只需按 ...

  8. 七种影视截图截屏的小方法

    方法一: Windows Media Player10 首先介绍,最简单的视频截图方法.Media Player10是常用的视频播放器,也可以视频截图.我们在播放电影的过程中,遇到想截取的图片,只需按 ...

  9. java实现录屏_java录屏截屏: 用java代码实现的录屏和截图截屏,并在springboot上实现...

    由于习惯了springboot 所以就写在springboot上了,并暴露了一个接口来触发录屏功能 核心代码在fxbase包下的VideoRecorder类中 但是代码写的有点乱,使用者可以不必过度关 ...

最新文章

  1. 清华《摸鱼学导论》开班啦!1000多学子在线摸鱼,无期末考试
  2. ROC曲线是通过样本点分类概率画出的 例如某一个sample预测为1概率为0.6 预测为0概率0.4这样画出来,此外如果曲线不是特别平滑的话,那么很可能存在过拟合的情况...
  3. 六:Dubbo与Zookeeper、SpringMvc整合和使用
  4. 根据当前系统日期求出本周,本月,本年,上周,上月,上年的第一天
  5. 2021-05-08 docker  拷贝东西到镜像,和拷贝到宿主机
  6. websocket 更新点位 浏览器卡顿_我们来看看Swoole是如何实现WebSocket服务器及客户端的...
  7. python基础的学习
  8. 10php1c,PHP程序员,进阶选择C还是C++亦或者别语言
  9. i.MX31主要开发资源(转贴)
  10. matlab gui 数据处理,基于MATLAB GUI的数据处理分析界面的设计与应用
  11. Java项目:springboot宠物医院管理系统
  12. 季琦谈创业:三对矛盾和三个关口[转]
  13. 举个栗子!Tableau 技巧(185):实现多度量嵌套排序
  14. 2021金山WPS秋招前端笔试题
  15. 品牌制造商做电子商务的成本结构分析
  16. 第5章 SIM卡锁定PIN解锁流程
  17. 基于Spring Boot 2.5.1 微服务框架发布(Eurynome Cloud )
  18. 请更换备份电池 pos机_POS机报错58终端无效的快速处理方法!
  19. 【毕业设计】STM32单片机的智能手环 - 蓝牙手环 物联网
  20. Android项目必备技术

热门文章

  1. 架构师技能6:深入MySQL原理-Waiting for table metadata lock引发系统崩溃
  2. BSP和MapReduce有什么区别?
  3. Nodejs 开发最佳实践
  4. 循环里发送请求java_servlets – 在Java Servlet中转发请求时的无限循环
  5. jmeter mysql查询结果提取_jmeter(11)-jdbc请求及请求后的响应结果如何提取
  6. Java IO篇 Java IO编程
  7. 【Linux】Linux命令详解
  8. 基于Python的蒙特卡罗方法估计Pi值的实现
  9. 简单辨析关系和区别:YUV、H.264、RTP、UDP、RTSP
  10. 六、MySQL 数据库练习题1(包含前5章练习题目及答案)