Unity3d学习09

这次带来的是关于unity3d里自写截图的,这个功能可以实现将当前屏幕画面保存为图片~

1.首先介绍一种 超级简单方法,调用U3D自带的api

Application.CaptureScreenshot("jietu.png");

就这一句话,就能将当前屏幕所有内容保存为png格式的图片,图片的储存位置为当前工程的子目录下。

但是这种方法有一个很大的弊端,首先就是保存的是整个屏幕的内容,不可以实现区域截图,其次就是在效率上会有一些慢~

2.接下来介绍一个刚刚实现的可以随意选择截图区域,随意选择图片存放位置的方法~

这种方法相比第一种方法要麻烦一些,但是代码量也不是很多,只要大家可以花5分钟仔细看看就可以掌握了,因为运用的还是很基础的知识~

好了上代码:

void shot()

{

        Texture2D temp = newTexture2D( width, height);

        //新建一个texture2D用来临时存储我们的图片,widthheight分别是图片的宽和高

         temp.ReadPixels(new Rect(position_topLeft.x, position_topLeft.y,width, height)),0,0);

        //temp临时图片存入内容,就是读取屏幕上的内容,读取区域由第一个参数Rect决定,         //截图区域任意性就在这里体现啦~不知道Rect的朋友我在下面讲一下

        temp.Apply ();

        byte[] bytes =temp.EncodeToPNG ();

        //temp临时图片的内容转换为byte数组存入临时数组bytes

        string filePath =Application.dataPath+"/123.png";

        //这个是图片存储位置,存储位置任意性就在这里体现啦~

        System.IO.FileStreams = new System.IO.FileStream (filePath, System.IO.FileMode.Create);

        //新建一个文件流,存储路径设为我们刚刚设置的,用于下面的文件存储

       //这个地方大家要注意下,调用了windowsdll所以在Unity里要设置以下,我会在下面说明

        s.Write (bytes, 0,bytes.Length);

       //将存有图片信息的byte数组写入通过文件流写入

        s.Close();

        Debug.Log("screenshot!");

}

相关说明:

1.Rect是表示一个矩形区域的一种变量,它的四个初始化参数分别代表:矩形区域左上点x坐标,矩形区域左上点y坐标,矩形区域宽度,矩形区域高度。

2.调用windowsdll需要设置如下:

   Edit->projectsetting->player->other setting

   将选项:ApiCompatibility Level设为.NET 2.0

   


好了,咱们的截图功能完美实现啦,大家完全可想出各种各样的方法比如最简单的获取屏幕鼠标坐标,然后将相关参数传入代码头两行决定截图区域的参数里,想截哪就截哪~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值