1.Application.CaptureScreenshot("Screenshot.png", 0);

2.

  1. exture2D CaptureScreenshot2(Rect rect)
  2. {
  3. // 先创建一个的空纹理,大小可根据实现需要来设置
  4. Texture2D screenShot = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.RGB24,false);
  5. // 读取屏幕像素信息并存储为纹理数据,
  6. screenShot.ReadPixels(rect, 0, 0);
  7. screenShot.Apply();
  8. // 然后将这些纹理数据,成一个png图片文件
  9. byte[] bytes = screenShot.EncodeToPNG();
  10. string filename = Application.dataPath + "/Screenshot.png";
  11. System.IO.File.WriteAllBytes(filename, bytes);
  12. Debug.Log(string.Format("截屏了一张图片: {0}", filename));
  13. // 最后,我返回这个Texture2d对象,这样我们直接,所这个截图图示在游戏中,当然这个根据自己的需求的。
  14. return screenShot;
  15. }
  16. 截全屏(如下图, 注:有ui):
    CaptureScreenshot2( new Rect( Screen.width*0f, Screen.height*0f, Screen.width*1f, Screen.height*1f));


    截中间4分之(如下图):
    CaptureScreenshot2( new Rect( Screen.width*0.25f, Screen.height*0.25f, Screen.width*0.5f, Screen.height*0.5f));

3.

  1. Texture2D CaptureCamera(Camera camera, Rect rect)
  2. {
  3. // 创建一个RenderTexture对象
  4. RenderTexture rt = new RenderTexture((int)rect.width, (int)rect.height, 0);
  5. // 临时设置相关相机的targetTexture为rt, 并手动渲染相关相机
  6. camera.targetTexture = rt;
  7. camera.Render();
  8. //ps: --- 如果这样加上第二个相机,可以实现只截图某几个指定的相机一起看到的图像。
  9. //ps: camera2.targetTexture = rt;
  10. //ps: camera2.Render();
  11. //ps: -------------------------------------------------------------------
  12. // 激活这个rt, 并从中中读取像素。
  13. RenderTexture.active = rt;
  14. Texture2D screenShot = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.RGB24,false);
  15. screenShot.ReadPixels(rect, 0, 0);// 注:这个时候,它是从RenderTexture.active中读取像素
  16. screenShot.Apply();
  17. // 重置相关参数,以使用camera继续在屏幕上显示
  18. camera.targetTexture = null;
  19. //ps: camera2.targetTexture = null;
  20. RenderTexture.active = null; // JC: added to avoid errors
  21. GameObject.Destroy(rt);
  22. // 最后将这些纹理数据,成一个png图片文件
  23. byte[] bytes = screenShot.EncodeToPNG();
  24. string filename = Application.dataPath + "/Screenshot.png";
  25. System.IO.File.WriteAllBytes(filename, bytes);
  26. Debug.Log(string.Format("截屏了一张照片: {0}", filename));
  27. return screenShot;
  28. }

Unity3d之截图的更多相关文章

  1. Unity3d之截图方法

    http://blog.csdn.net/highning0007/article/details/37991787 Unity3d之截图方法 分类: Unity3D2013-11-28 17:13  ...

  2. Unity3D随意截图并保存

    http://blog.csdn.net/awnuxcvbn/article/details/9199245 效果 代码 <pre name="code" class=&qu ...

  3. Unity3D for VR 学习(2): 暴风魔镜框架探索

    学习一个新技术,有三个法宝: 法宝1: 掌握厂家提供的用户API手册 法宝2: 掌握厂家提供的demo样例 法宝3:<每个研发人员都应树立的一个demo模式> 故,学习魔镜4技术,亦如是也 ...

  4. Unity3d截图保存到Android相册的实现

    Unity3d截图保存到Android相册的实现-----------------------------ultrasoon 季风原创--------------------------------- ...

  5. 【Unity3D】Unity3D 摄像机带透明截图

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/CropCamera.html ↓↓↓下面的废话可以不看↓↓↓ 最近处理了一批我的游戏的图标,步骤特别繁琐, 需要先 ...

  6. 在Unity3D中利用 RenderTexture 实现游戏内截图

    using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; publ ...

  7. (转)Unity3d的3种截图方法

    下面是我总结的.在u3d中的,三种截屏方法: 1.使用Application类下的CaptureScreenshot方法. void CaptureScreen() { Application.Cap ...

  8. 获取Unity3D虚拟摄像机的图像

    最新博客地址已转到: http://blog.csdn.net/zzlyw?viewmode=contents   ------------------------------------------ ...

  9. [Unity3D]自己动手重制坦克舰队ArmadaTank

    [Unity3D]自己动手重制坦克舰队ArmadaTank 我玩过一款坦克游戏ArmadaTank(坦克舰队),如下图所示 几个月前我尝试用Unity3D重制这款游戏,已经可以玩起来了.下面是在PC上 ...

随机推荐

  1. 玩转变量、环境变量以及数学运算(shell)

    变量和环境变量    var=value  给变量赋值,输出语句:$ echo $var或者是$ echo ${var},记住中间有个空格 例如:name="coffee" age ...

  2. 一个简单的Java程序例子以及其几种注释

    在说道主题前,先来啰嗦两句,o()︿︶)o 唉,不说两句心里就有个疙瘩,也许这就是所谓的强迫症吧,好了说说我想啰嗦的,其实也就是这样子的,关于Java开发工具箱的下载以及环境的配置.Java开发工具箱 ...

  3. as自定义菜单。

    与菜单相关的类一共有3个 ContextMenu类 ContextMenuBuiltInItems类 //与系统内置菜单相关的类 ContextMenuItem类 //与用户自定义菜单相关的类

  4. JavaScript设计模式 -- 读书笔记

    JavaScript设计模式 一. 设计模式 一个模式就是一个可重用的方案: 有效的解决方法.易重用.善于表达该解决方案: 未通过"模式特性"测试的模式称为模式原型: 三规则:适用 ...

  5. winrar激活

    (从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期2014-02-11) 新建记事本文件(txt文件),然后将文件另存为以 rarreg.key 为文件名的文件(当然由于设置的不同,可能 ...

  6. C# 动态执行批处理命令

    本文转载:http://www.cnblogs.com/lenic/p/4097045.html C# 动态执行一系列控制台命令,并允许实时显示出来执行结果时,可以使用下面的函数.可以达到的效果为: ...

  7. asp.net负载均衡方案[转]

    在前面的几篇文章中,主要谈到了在Discuz!NT中的跨站缓存数据,数据库负载均衡.但如果要实现将产品分布式布置到若干机器,组成集群来共同支撑起整个业务的话,还是有一定问题的(后面会有所介绍).下面先 ...

  8. iOS开发——动画总结OC篇&所有常用动画总结

    所有常用动画总结 先来装下B,看不懂没关系,其实我也看不懂-

  9. CSS3实现自定义Checkbox和Radiobox

    我们知道浏览器自带的Checkbox复选框不怎么美观(这或许是我们看习惯了的缘故),而且复选框在不同的浏览器上显示的样式又有很大的差异,由于目前越来越多的人开始接受支持CSS3的现代浏览器,所以今天就 ...

  10. 剑指 offer set 7 调整数组顺序使奇数位于偶数前面

    总结 1. 之前不确定这种题的最终解法, 现在明确了, 就是一次快排