【Unityスクリーンショット機能】現在の画面を自由にキャプチャー

小さな画面キャプチャ機能を共有するために、著者はここで無料のスクリーンショットの基本プランを提供します。

1. スクリーンショットを撮るためのキャンバスを作成する

        画面の背景を作成します。

        無料のスクリーンショット領域として ShowImage を作成する

 

         全体的な構成は次のとおりです

2. スクリプトの作成

        スクリプトの全体的な考え方は、最初に画面サイズを取得し、次に現在の画面範囲内で必要なスクリーンショット サイズを取得し、最後にそれを表示することです。コードは次のとおりです。

 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