孙广东   2015.4.27

游戏中测试人员在测试的时候,我们很希望能他们捕捉到当时的问题瞬间,而不是简单的用语言描述。

通过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)
using UnityEngine;
using System.Collections;
using System;/// <summary>
/// 用于对游戏的画面进行捕捉,就是截屏
/// 测试可以使用,对问题捕捉下来
/// </summary>public class ScreenShoter : MonoBehaviour
{public string filePath  = Application.dataPath;void Awake(){DontDestroyOnLoad(transform.gameObject);}void OnGUI(){if (GUI.Button(new Rect((Screen.width - 60) * 0.5f, 0, 60, 30), "截屏")){Application.CaptureScreenshot(string.Format("{0}\\ss_{1}x{2}_{3}.jpg",
filePath, Screen.width, Screen.height, System.DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds));}}
}

u3d 巧用 CaptureScreenshot捕捉游戏画面(截图,截屏)相关推荐

  1. 用 CaptureScreenshot捕捉游戏画面(截图,截屏)

    通过unity内置的截图功能,也有几种方法: 1,通过Application.CaptureScreenshot来截图,这种方式最简单,一行代码搞定,缺点也很明显,比如不能选择区域,不能选择图片格式, ...

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

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

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

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

  4. 游戏翻译工具截屏翻译工具源代码 图片单词识别

    游戏翻译工具截屏翻译工具源代码 # -*- coding: utf-8 -*- """ Created on Mon Jan 14 23:24:05 2019 截取屏幕英 ...

  5. 苹果MacBook电脑如何捕捉特定窗口并截屏?

    日常的电脑工作中,我们经常需要使用到截图的功能.有时候需要截取整个屏幕,有时候需要截取某个形状.当然,有时候也需要截图特定的区域,比如某个软件的截图等等.今天小编给大家介绍怎么在MacBook上面捕捉 ...

  6. 苹果MacBook电脑怎么捕捉特定窗口并截屏?

    日常的电脑工作中,我们经常需要使用到截图的功能.有时候需要截取整个屏幕,有时候需要截取某个形状.当然,有时候也需要截图特定的区域,比如某个软件的截图等等.今天小编给大家介绍怎么在MacBook上面捕捉 ...

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

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

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

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

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

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

最新文章

  1. 人工智能基础-算法工程师为什么要懂线性代数?
  2. YII2 Model 类切换数据库连接
  3. fir.im Weekly - APP 性能监测优化 二三事
  4. (chap2 TCP/IP基础知识) TCP/IP分层模型的通信流程
  5. vue动画效果配置和弹层css sticky footer
  6. sql年月日24小时制_24小时制的「无码」真人秀,令人叫绝
  7. 云电脑是什么_云电脑和我们现在平时用的电脑有什么区别?
  8. 【APP】Linux运维利器--Grep命令及正则表达式
  9. Oracle账户的umask,AIX的Umask
  10. mongodb mapredReduce 多个条件分组(group by)
  11. 每个极客都应该知道的Linux技巧(区分开普通的Linux用户和超级极客)
  12. 被纳入MSCI ACWI全球指数,达达集团的财报透露出什么信号?
  13. 宋立波:让子弹飞和云安全
  14. 社会软件力量:六度分隔理论
  15. 新手学习电脑知识的一些方法 oldtimeblog
  16. 自己动手搭建苹果推送Push服务器
  17. bootstrap-table的refresh查询
  18. 信用风险计量模型汇总
  19. MATLAB马氏链分析工具
  20. Python面向对象编程中的创建类及其实例化对象等方法.....【超级详细】

热门文章

  1. 【基于Arduino APDS9960 传感器的手势控制非接触式电梯】
  2. intel e1000 网卡 napi分析
  3. 安卓项目实战之强大的网络请求框架okGo使用详解(一):实现get,post基本网络请求,下载上传进度监听以及对Callback自定义的深入理解
  4. 计算机函数sun怎么用,手把手演示sumif函数怎么用【处置步骤】
  5. 新技能get√​10个PS加速小技巧让你的PS不再卡
  6. docker for windows使用
  7. Android之内存泄漏调试学习与总结
  8. linux【网络】网络请求延迟变大了,我该怎么办?
  9. 几个开源的运维管理系统介绍
  10. 似然函数取对数的原因