【Unity 截屏功能】对当前屏幕自由截取

分享一个屏幕截取的小功能,笔者这里给出自由截屏的基本方案。

一、创建一个供截屏的Canvas

        创建屏幕背景:

        创建一个ShowImage作为自由截屏区域

 

         整体结构如下

二、创建脚本

        脚本的整体思路就是先获取屏幕大小,之后在当前屏幕范围内获取你所需要的截屏大小,最后显示,以下是代码:

 private void Start()
    {
        StartCoroutine(CaptureGUIPNG());    
    }

    //截取后用来显示的Iamge
    public Image ShowImage;
    Texture2D _screenShot;

    //定义一个协程
    IEnumerator CaptureGUIPNG()
    {   //WaitForEndOfFrame在OnGUI之后执行
        yield return new WaitForEndOfFrame();
        RectTransform rect = ShowImage.GetComponent<RectTransform>();
        _screenShot = new Texture2D(Screen.width, Screen.height, TextureFormat.RGBA32, false);
        var width = rect.sizeDelta.x;
        var height = rect.sizeDelta.y;
        var startx = rect.position.x - (width / 2) * rect.localScale.x;
        var starty = rect.position.y - (height / 2) * rect.localScale.y;
        _screenShot.ReadPixels(new Rect(startx, starty, width, height), 0, 0);
        _screenShot.Apply();
        Sprite sp = Sprite.Create(_screenShot,new Rect(0,0, width, height), new Vector2(0.5f, 0.5f), 100.0f);
        ShowImage.sprite = sp;
        yield return null;
        ShowImage.color = Color.white;
    }

        运行结果如下,可以明显看到所框选的区域截屏成功:

         最后,如果这篇文章帮助到你,请点个赞吧!

猜你喜欢

转载自blog.csdn.net/qq_45360148/article/details/131856201
今日推荐