[Função de captura de tela do Unity] Capture livremente a tela atual

Para compartilhar uma função de captura de tela pequena, o autor fornece aqui um plano básico para capturas de tela gratuitas.

1. Crie uma tela para fazer capturas de tela

        Crie um fundo de tela:

        Crie um ShowImage como uma área de captura de tela gratuita

 

         A estrutura geral é a seguinte

2. Crie um roteiro

        A ideia geral do script é primeiro obter o tamanho da tela, depois obter o tamanho da captura de tela necessário dentro do intervalo de tela atual e, finalmente, exibi-lo. O código a seguir é:

 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;
    }

        Os resultados da execução são os seguintes: você pode ver claramente que a captura de tela da área selecionada foi bem-sucedida:

         Por fim, se este artigo te ajudou, dê um like!

 

Acho que você gosta

Origin blog.csdn.net/qq_45360148/article/details/131856201
Recomendado
Clasificación