u3d 巧用 CaptureScreenshot捕捉游戏画面(截图,截屏)
来源:互联网 发布:ios软件开发教学 编辑:程序博客网 时间:2024/06/11 02:09
孙广东 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);
static void CaptureScreenshot(string filename, int superSize = 0);
文件默认被保存在这个路径:persistent data path
那么图片我们存储在哪里呢? 在移动设备上的路径,我们有一下几种:
Application.dataPath:
此属性用于返回程序的数据文件所在文件夹的路径。例如在Editor中就是Assets了。
Application.streamingAssetsPath:
此属性用于返回流数据的缓存目录,返回路径为相对路径,适合设置一些外部数据文件的路径。
Application.persistentDataPath:
此属性用于返回一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件。这个路径是可读可写的
Application.temporaryCachePath:
此属性用于返回一个临时数据的缓存目录。
此属性用于返回程序的数据文件所在文件夹的路径。例如在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
/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)); } }}
1 1
- u3d 巧用 CaptureScreenshot捕捉游戏画面(截图,截屏)
- 用 CaptureScreenshot捕捉游戏画面(截图,截屏)
- U3d之Application.CaptureScreenshot
- 用Application.CaptureScreenshot方法截图(Javascript)
- U3D 截图
- 打造真实画面 从游戏截图看顶级引擎(图)
- u3d游戏客户端架构(---)
- .NET捕捉画面
- 捕捉摄像头画面变化,路由器+摄像头监控架起来了,MOTION监测截图,MUTT+MSMTP发邮件
- U3D启动画面-Splash Image
- Unity3D游戏开发之如何用U3D截图的技能培训
- PicPick (图像捕捉/截图/处理)
- U3D RPC网络传输相机画面
- CentOS开机显示画面截图
- u3d游戏客户端架构
- u3d游戏客户端架构
- U3D打箱子游戏
- u3d游戏客户端架构
- 闹钟UI、数据存储小结
- 如何编辑windows下的注册表编辑器
- Android开发之如何保证Service不被杀掉
- 黑马程序员_java线程进阶
- erlang中dict的实现
- u3d 巧用 CaptureScreenshot捕捉游戏画面(截图,截屏)
- linux用户创建,查看相关命令
- Java初学习 - Java中的浅拷贝和深拷贝
- 小事情大道理(一)
- android cocos2d 触屏事件
- 使用wxsqlite3后多表联合查询无数据的问题解决方法
- hihoCoder 1156 彩色的树
- Java基础语法
- 解题报告 之 SGU185 Two shortest