EasyAR 开发技巧----截屏
来源:互联网 发布:数据架构师要学什么 编辑:程序博客网 时间:2024/06/05 16:20
截屏操作也是开发AR APP 常用的一个功能,与录屏功能一样,都是保留我们看到的精彩的AR瞬间以便于分享到朋友圈。这篇文章主要介绍3种常见的截屏方法供大家参考。
Step 1:开发准备
在 HelloAR 这个项目的基础上进行开发,我们在官网上下载unity的HelloAR案例导入unity中。
打开HelloARscene,填写好Key,然后我们布局UI,我们还用上次录屏功能的那张图片。布局框架如图:
我们建立一个空的"GameObject" ,整个布局如下图:
Step 2:第一种截屏方法
我们在新建的"GameObject" 下面新建一个脚本"GameCon".对于第一种实现截屏功能,我们使用unity 最传统也是最简单的方法:CaptureScreenshot()
public void Capture() { Application.CaptureScreenshot ("ScreenShot.png",0); }
将该方法与Button 绑定,点击按钮后,将应用画面保存下来,图片名字为“ScreenShot.png”。它会直接保存在我们项目的文件夹里,电脑上可以轻松查看到,在移动端上(比如Android 平台),保存路径是:/sdcard/Android/data/你的app打包信息,比如我的就是/sdcard/Android/data/com.mars.jieping:在files文件夹下就可以找到保存的图片,当然你也可以自定义保存路径。
PS:知道图片的路径特别重要,尤其是对后续分享功能的实现。
这种方法实现起来特别简单,仅仅一行代码就可以解决,但它的缺点也够明显,它默认的是全屏截屏,也就是你的UI层也会被保存下来,用户体验不是很好。
Step 3:截屏插件
第二种方法我们使用一种截屏插件:GalleryScreenshot。这是一款流行的截屏插件,尤其是Android /ios 平台上的集成截屏功能特别友好,好多AR开发上都会用到它。
链接: https://pan.baidu.com/s/1mih0SQW 密码: 1csb
下载好后,导入到unity中.我们发现这里面最重要的脚本是"GalleryScreenshotExample.cs"。它是实现截屏的关键,原始脚本是通过OnGUI来实现的,我们简单修改下,让截屏的方法与我们的Button 绑定。
public void Capture() { StartCoroutine (ScreenshotManager.Save ("MyScreenshot", "MyApp", true)); }
在移动端测试后,会发现它会直接将我们的图片保存到相册里,非常方便,但缺点仍是全屏截图。
Step 4:较完美的截屏方法
前两种方法虽然代码实现比较简单,但是体验不会太好,第三种是一种比较好的截屏解决方案,将UI的camera 层提取出来,这样就可以保存我们ARCamera 所“看到的画面”。
我们在前面的那个脚本"GameCon" 继续实现。新建一个方法:
void CaptureCamera(Camera camera, Rect rect) { RenderTexture rt = new RenderTexture((int)rect.width, (int)rect.height, 0); camera.targetTexture = rt; camera.Render(); RenderTexture.active = rt; Texture2D screenShot = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.RGB24,false); screenShot.ReadPixels(rect, 0, 0); screenShot.Apply(); camera.targetTexture = null; RenderTexture.active = null; GameObject.Destroy(rt); byte[] bytes = screenShot.EncodeToPNG(); string filename = Application.dataPath + "/Screenshot.png"; System.IO.File.WriteAllBytes(filename, bytes); }
需要传入两个参数:
1.需要截屏的那个camera 层
2.屏幕大小
首先我们在开头定义一个Camera:
public Camera camera;
我们再建一个方法调用:
public void Capture2() { CaptureCamera (camera,new Rect( Screen.width*0f, Screen.height*0f, Screen.width*1f, Screen.height*1f)); }
然后在unity里将我们的ARCamera 赋值:
ps:参考--- http://blog.csdn.net/anyuanlzh/article/details/17008909
测试后,会发现我们的UI界面不见了,这样的体验是最好的。当然,截屏的方法不止这些,大家有什么好的解决方案可以在评论区留言!
我们用EasyAR 实现了在AR开发中最常见的两个功能:
录屏:EasyAR 初学者入门指南(5)---录屏功能
截屏:EasyAR 开发技巧----截屏
因此在后续的技术分享中我们将实现Share (分享到社交平台)的功能。
阅读全文
0 0
- EasyAR 开发技巧----截屏
- EasyAR开发技巧---模型交互操作
- EasyAR开发教程
- EasyAR
- EasyAR
- EasyAR 开发教程系列1--小试牛刀
- AR开发实例教程--- 用EasyAR开发节日礼物
- Leap Motion+EasyAR AR手势识别开发教程
- Leap Motion+EasyAR AR手势识别开发教程
- AR移动应用开发(一) Unity与EasyAR
- EasyAR + 第三方插件开发系列(1)--模型控制
- EasyAR + 第三方插件开发系列(2)--伤害效果
- 基于EasyAR的Android端AR应用开发(一)
- EasyAR+Unity开发(一)HelloAR Demo配置
- EasyAR使用
- EasyAR初探
- EasyAR从入门到精通开发系列教程(1)---搭建开发环境
- EasyAR从入门到精通开发系列教程(1)---搭建开发环境
- 单词拼接
- Linux环境下安装python开发环境
- 《零基础入门学习python》学习过程(二)
- 资料学习资源网站,记录贴
- lauxlib.c(5.3.4)解析
- EasyAR 开发技巧----截屏
- JS获取元素属性和自定义属性
- 常见开发软件环境变量配置
- spring错误校验
- Java与Highcharts实例(五)
- 嵌入式Linux之我行——ARM MMU工作原理剖析
- 算法导论学习(一) 基础入门
- HDU-5855 Less Time, More profit(最大权闭合图+二分)
- Android 实现点击两次BACK键退出应用