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

有时候要重复用某一个场景的某一个角度,都过去好几步了结果总不能再把已经打乱的场景物体再移动回去吧。so~智慧的我完成了伟大的偷懒。截图保存,什么时候要看,直接上图片以假乱真棒棒哒~

当然这个功能还能用在很多地方,所以有拓展了一下鼠标自定义范围截图并保存在了文件夹下。然后就华丽丽的出现了下边这些代码。

using UnityEngine;
using System.Collections;

public class jietu : MonoBehaviour {

    int w, h;
    Vector3 v1, v2;
    void Update()
    {
        //按下鼠标拖动直至松开鼠标划定范围,截图
        if (Input.GetMouseButtonDown(0))
        {
            v1 = Input.mousePosition;//鼠标按下位置~
        }
        if (Input.GetMouseButtonUp(0))
        {
            v2 = Input.mousePosition; //鼠标抬起位置~
            //计算鼠标划定范围的长和宽~~
            w = int.Parse(Mathf.Abs(v1.x - v2.x).ToString());
            h = int.Parse(Mathf.Abs(v1.y - v2.y).ToString());
            StartCoroutine(GetCapture());
        }
    }
    IEnumerator GetCapture()
    {
        //等待所有的摄像机跟GUI渲染完成
        yield return new WaitForEndOfFrame();

        Texture2D tex = new Texture2D(w, h, TextureFormat.RGB24, false);
        //----------------------------------------------------------------------------计算区域----------------------------------------------------
        float vx = (v1.x > v2.x) ? v2.x : v1.x;                                 //取较小的x,y作为起始点
        float vy = (v1.y > v2.y) ? v2.y : v1.y;
        tex.ReadPixels(new Rect(vx, vy, w, h), 0, 0, true);
        //-----------------------------------------------------------------------------------------------------------------------------------------
        byte[] imagebytes = tex.EncodeToPNG();//转化为png图

        tex.Compress(false);//对屏幕缓存进行压缩
        System.IO.File.WriteAllBytes(Application.dataPath + "/hehe.png", imagebytes);//存储png图
      
    }
}

 

转载于:https://www.cnblogs.com/Feiyuzhu/p/4649340.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值