Unity截图

什么都不说了,直接上代码。

using UnityEngine;
using System.Collections;
using System.IO;

public class CutImage : MonoBehaviour
{
    public Vector2 startPos;     //鼠标开始位置
    public Vector2 endPos;   //鼠标结束位置
    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            startPos = Input.mousePosition;
        }
        if(Input.GetMouseButtonUp(0))
        {
            endPos = Input.mousePosition;
            StartCoroutine(CreateImage());   //当鼠标按键抬起,开始截图
        }

    }

    IEnumerator CreateImage()
    {
        int width = (int)(endPos.x - startPos.x);      //图片宽
        int height = (int)(startPos.y - endPos.y);     //图片高
        Texture2D image = new Texture2D(width, height,TextureFormat.ARGB32, true);   //创建一个纹理
        Rect rect = new Rect(startPos.x, Screen.height - (Screen.height - endPos.y), width, height);      //在屏幕上截取一个矩形
        yield return new WaitForEndOfFrame();    //等待帧结束

        image.ReadPixels(rect,0, 0,  true);   //在屏幕的规定区域内读取像素
        image.Apply();       //转化成图片
        yield return image;

        byte[] bs = image.EncodeToPNG();      //把图片转化成二进制
        File.WriteAllBytes(Application.dataPath + "/Image.png", bs);     //把图片街道本地
        yield return null;
    }

}
时间: 2024-11-08 21:21:22

Unity截图的相关文章

Unity截图的三种方式

1.最常见的一种方式 IEnumerator CaputreScreen() { yield return new WaitForEndOfFrame(); texture.ReadPixels(new Rect(0, 0, width, height), 0, 0); texture.Apply(); } 该方法可以截取一个矩形框内的图像,缺点是需要等待一帧结束才可以读取到图像数据 2.Unity自带截图 Application.CaptureScreenshot("Screenshot.pn

Unity 截图方法

调用Unity API ScreenCapture.CaptureScreenshot("screen.png", 0); 截图的图片仅能保存为png格式,且第一个形参必须加.png 第二个参数为设定分辨率,大于1的情况下会增加分辨率,如为4,则是默认分辨率的4倍 只能保存在Application.persistentDataPath目录下 函数本身只能截全屏,如果实在要截部分屏幕,可以通过在截图后,当作本地图片读取后,进行修改 使用Texture2D.ReadPixels方法,该方法

Unity 截图选择框,中间全透明,边缘半透明

效果:点击白色框可拖拽选择区域 代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class jietu : MonoBehaviour, IDragHandler, IEndDragHandler,IBeginDragHandler { void Start() { //DrawTriangle(30,

【基础】Unity截图时只截取场景内容

在游戏截屏时,我们需要只截取场景内容,而不包括NGUI控件,实现脚本如下(只截取gameCamera和bgCamera中的内容): using UnityEngine; using System.Collections; public class CaptureTest : MonoBehaviour { public Camera gameCamera; public Camera bgCamera; // Use this for initialization void Start () {

unity 截图保存及显示

需要注意的是win平台加载图片,用到 "file:///" 参考来源 StartCoroutine(SaveThePlayerColorImage(320)); //save the color image when the player pass the wall IEnumerator SaveThePlayerColorImage(int width) { float height=width/4*3; string dateTime = DateTime.Now.ToStrin

【Unity】鼠标划定范围然后截图~

有时候要重复用某一个场景的某一个角度,都过去好几步了结果总不能再把已经打乱的场景物体再移动回去吧.so~智慧的我完成了伟大的偷懒.截图保存,什么时候要看,直接上图片以假乱真棒棒哒~ 当然这个功能还能用在很多地方,所以有拓展了一下鼠标自定义范围截图并保存在了文件夹下.然后就华丽丽的出现了下边这些代码. using UnityEngine; using System.Collections; public class jietu : MonoBehaviour { int w, h; Vector3

unity发布安卓 截图保存到本地

using System.IO; //获取系统时间并命名相片名 System.DateTime now = System.DateTime.Now; string times = now.ToString (); times = times.Trim (); times = times.Replace ("/","-"); //文件名 string filename = "Screenshot"+times+".png"; /

Unity里面的自动寻路(二)

接着我的 上一篇自动寻路文章,这一次我们就来学习一下与自动寻路有关的组件吧.Unity中与自动寻路相关的组件主要有两个:NavMeshAgent (  又称导航网格代理 ),Off Mesh Link( 分离网格链接 ).这两个组件的作用与使用范围是不同的,我们唯一可以确定的是我们必须烘焙地形,产生NavMesh(导航网格).因为导航网格决定我们的角色(带有导航网格代理的角色)活动的范围.NavMeshAgent组件需要附着寻路的角色身上,比如怪物,而OffMeshLink这个组件主要是用来构造

unity 3消 游戏

3消游戏跟着智能手机流行到现在已经有很长一段时间,unity实现的3消 https://github.com/textcube/match3action 截图如下: 在阅读源码的时候不难发现,GameSystem所负责的东西太过繁重,很多时候总是要很费力去分清哪些是对ui进行处理,哪些是进行数据处理,哪些又是在进行逻辑判断. 源码类图如下: 要注意的是,Cell是引用类型. MatchItem 里面所存放的cell,和GameSystem中所存放Cell[,]对应的cell项是指向同一内存地址的