1. function OnGUI(){
  2. if(GUI.Button(Rect(Screen.width*0.5-50,Screen.height*0.5-50,100,100),"screen")){
  3. Application.CaptureScreenshot("Screenshot.png");
  4. }
  5. }

这张Screenshot.png图片被存在了当前工程的子目录下了。之前在android上面一直不知道路径,后来把所有路径试玩了总算ok了,呵呵~~~在android上截取的图片存在Application.persistentDataPath上面,在pc上存在Application.dataPath。

  1. private var www:WWW;
  2. private var image:Texture;
  3. private var path:String;
  4. function Awake(){
  5. Application.CaptureScreenshot("Screenshot.png");
  6. }
  7. function Start () {
  8. if(Application.platform==RuntimePlatform.Android){
  9. path=Application.persistentDataPath;
  10. }else if(Application.platform==RuntimePlatform.WindowsPlayer){
  11. path=Application.dataPath;
  12. }else if(Application.platform==RuntimePlatform.WindowsEditor){
  13. path=Application.dataPath;
  14. path=path.Replace("/Assets",null);
  15. }
  16. www=new WWW("file://"+path+"/Screenshot.png");
  17. yield www;
  18. image=www.texture;
  19. }
  20. function OnGUI(){
  21. GUI.Label(Rect(0,0,400,50),"1:"+Application.persistentDataPath);
  22. GUI.Label(Rect(0,50,400,50),"2:"+Application.dataPath);
  23. GUI.Label(Rect(0,100,400,50),"3:"+Application.temporaryCachePath);
  24. GUI.Label(Rect(0,150,400,50),"4:"+Application.absoluteURL);
  25. GUI.Label(Rect(0,200,400,50),"5:"+Application.streamingAssetsPath);
  26. GUI.DrawTexture(Rect(0,250,300,200),image);
  27. }

在编辑器上各种路径:

在pc上各种路径:

在web上各种路径:

在android上面各种路径:

第二种方法:

  1. import System.IO;
  2. var www:WWW;
  3. var image:Texture;
  4. function Start () {
  5. }
  6. function OnGUI() {
  7. if(GUI.Button(Rect(0,0,100,100),"png")){
  8. writeFile();
  9. }
  10. if(Input.GetKey(KeyCode.Escape)){
  11. Application.Quit();
  12. }
  13. www=new WWW("file://"+path);
  14. image=www.texture;
  15. GUI.Button(Rect(Screen.width-100,0,100,100),image);
  16. }
  17. private var fileName : String = "jietu2";
  18. private var path:String;
  19. function writeFile()
  20. {
  21. path=Application.dataPath;
  22. var tex : Texture2D= new Texture2D(Screen.width,Screen.height,TextureFormat.RGB24, false);
  23. tex.ReadPixels(Rect(0,0,Screen.width,Screen.height),0,0);
  24. tex.Apply();
  25. var bytes : byte[]=tex.EncodeToPNG();
  26. Destroy(tex);
  27. var thisName : String = fileName+".png";
  28. if(Application.platform==RuntimePlatform.Android){
  29. path="/mnt/sdcard/"+thisName;
  30. }else{
  31. path=path+thisName;
  32. }
  33. var cache = new FileStream(path, FileMode.Create);
  34. cache.Write(bytes,0,bytes.Length);
  35. cache.Close();
  36. }

后来我又试了一下这个方法,结果又不行了,运行到var cache = new FileStream(path, FileMode.Create);就不运行了。

unity3d屏幕截图功能的更多相关文章

  1. node-webkit 屏幕截图功能

    做 IM 屏幕截图是少不了的,之前 windows 版本是调用的 qq 输入法的截图功能,这个版本又再次尝试自己实现发现是可以的,getusermedia 的权限很高,代码如下 <!DOCTYP ...

  2. unity3d 计时功能舒爽解决方案

    上次也写了一篇计时功能的博客 今天这篇文章和上次的文章实现思路不一样,结果一样 上篇文章地址:http://www.cnblogs.com/shenggege/p/4251123.html 思路决定一 ...

  3. Unity3D 固定功能函数

    Unity 3D 测试固定功能函数执行顺序 1. 在GameObject和脚本激活状态下,测试: 2. 在GameObject激活状态下,测试: 3. 在2种情况都不激活的状态下测试:脚本无输出: 函 ...

  4. unity3d 各功能的运行秩序,打回来,订购,的次数

    Update 当MonoBehaviour启用时,其Update在每一帧被调用. 仅调用一次(每帧) LateUpdate 当Behaviour启用时,  每帧调用一次: FixedUpdate 当M ...

  5. Unity3d 屏幕截图。并保存。iOS

    - ( void ) imageSaved: ( UIImage *) image didFinishSavingWithError:( NSError *)error contextInfo: ( ...

  6. C#屏幕截图

    今天通过C#来实现一个简单的屏幕截图功能.实现思路,获取鼠标按下去的位置和鼠标左键释放的位置,计算这个区域的宽度和高度.然后通过 Graphics.CopyFromScreen 方法便可以获取到屏幕截 ...

  7. JAVA B/S系统实现客户端屏幕截图,Java版的QQ截图

    简介:本方法首先需要抓到屏幕的整个图象,将图象显示在一个JFrame中,再将JFrame全屏显示,这样就模拟出了一个桌面,Java也就可以获得鼠标的作用区域从而实现桌面中的小范围截屏.Java实现QQ ...

  8. pyautogui 文档(五):截图及定位功能

    截图函数 PyAutoGUI可以截取屏幕截图,将其保存到文件中,并在屏幕中查找图像.如果您有一个小图像,例如需要单击并希望在屏幕上找到它的按钮,这将非常有用.这些功能由PyScreeze模块提供,该模 ...

  9. 《VR入门系列教程》之14---面向大众的Unity3D

    大众化的游戏引擎--Unity3D     并不是所有VR应用都是游戏,然而现在做VR开发的几乎都会用专业游戏引擎来做,因为游戏引擎既满足了一个引擎的要求又可以方便地制作出高品质的VR应用.一个游戏引 ...

随机推荐

  1. Linux学习笔记之如何设置vim中的格式如行号等

    在我们编写代码程序时,我们时常想追求更好的格式,下面写一下我认为挺实用的格式命令以及如何更改 如果我们打开vim在其命令模式中输入格式命令时,下一次重新打开vim还是会和原先一样,所以我们需更改其配置 ...

  2. Spring Boot 项目几种启动方式

    Spring Boot 项目几种启动方式 1. 使用 main 启动 jar xxxx.jar 2. 使用 mvn 启动 mvn spring-boot:run 3. 使用 Spring Boot c ...

  3. 基于OpenSIPS做注册服务下,场景A打B,一方发起BYE挂断后收到500,另一方无法挂断的问题

    基于OpenSIPS做注册服务下,场景A打B,一方发起BYE挂断后收到500,另一方无法挂断的问题     最近在工作中遇到一个看似很奇怪的,排除起来很费劲,但最后的解决方式又及其简单的问题,下面我们 ...

  4. Bytom 储蓄分红 DAPP 开发指南

    储蓄分红DAPP 储蓄分红合约简介 储蓄分红合约指的是项目方发起了一个锁仓计划(即储蓄合约和取现合约),用户可以在准备期自由选择锁仓金额参与该计划,等到锁仓到期之后还可以自动获取锁仓的利润.用户可以在 ...

  5. 学习Hibernate5这一篇就够了

    配套资料,免费下载 链接:https://pan.baidu.com/s/1i_RXtOyN1e4MMph6V7ZF-g 提取码:8dw6 复制这段内容后打开百度网盘手机App,操作更方便哦 第一章 ...

  6. 刚体验完RabbitMQ?一文带你SpringBoot+RabbitMQ方式收发消息

    人生终将是场单人旅途,孤独之前是迷茫,孤独过后是成长. 楔子 这篇是消息队列RabbitMQ的第二弹. 上一篇的结尾我也预告了本篇的内容:利用RabbitTemplate和注解进行收发消息,还有一个我 ...

  7. Vue 函数式组件 functional

    函数式组件 无状态 无法实例化 内部没有任何生命周期处理函数 轻量,渲染性能高,适合只依赖于外部数据传递而变化的组件(展示组件,无逻辑和状态修改) 在template标签里标明functional 只 ...

  8. 快速入门Mybatis

    框架概述 什么是框架 它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题.使用框架的好处:框架封装了很多的细节,使开发者可以使用极简的方式实现功能.大大提高开发效率 三层架构 UI(表现层 ...

  9. 数据源管理 | 分布式NoSQL系统,Cassandra集群管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.Cassandra简介 1.基础描述 Cassandra是一套开源分布式NoSQL数据库系统.它最初由Facebook开发,用于储存收件箱 ...

  10. Linux内核之 基本概念

    一直想写写Linux内核的文章,特别是进程这方面的,说实话,不好写,也不太敢写:)直到遇到了一本好书.<Linux内核设计与实现>,原书<Linux Kernel Developme ...