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!