关于unity截屏的方法

16 篇文章 0 订阅

最近弄了一个小方法,就是unity中如何截屏,觉得有趣就分享一下 

写一个脚本,我这里挂在摄像机上。脚本里写一个Public的方法。
using UnityEngine;
using System.Collections;
using System.IO;//注意引入

public class SavedScreen : MonoBehaviour
{
    void Start()
    {
      
    }

    public void DO() {
        // 开启一个协程  
        StartCoroutine(UploadPNG());      
    }

    // 定义一个协程  
    IEnumerator UploadPNG()
    {


        // 因为"WaitForEndOfFrame"在OnGUI之后执行  
        // 所以我们只在渲染完成之后才读取屏幕上的画面  
        yield return new WaitForEndOfFrame();



        int width = Screen.width;
        int height = Screen.height;
        // 创建一个屏幕大小的纹理,RGB24 位格(24位格没有透明通道,32位的有)  
        Texture2D tex = new Texture2D(width, height, TextureFormat.RGB24, false);

        // 读取屏幕内容到我们自定义的纹理图片中  
        tex.ReadPixels(new Rect(0, 0, width, height), 0, 0);
        // 保存前面对纹理的修改  
        tex.Apply();

        // 编码纹理为PNG格式  
        byte[] bytes = tex.EncodeToPNG();
        // 销毁没用的图片纹理  
        Destroy(tex);

        // 将字节保存成图片,这个路径只能在PC端对图片进行读写操作  
        File.WriteAllBytes(Application.dataPath + "/Resources/onPcSavedScreen.png", bytes);
        // 这个路径会将图片保存到手机的沙盒中,这样就可以在手机上对其进行读写操作了  
        File.WriteAllBytes(Application.persistentDataPath + "/onMobileSavedScreen.png", bytes);

    }
}  
我这里用的NGUI,做一个button出来
创建一个Resources文件夹,好了运行点击截屏就可以了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值