본문 바로가기
Utils

Unity, 화면 스크린 캡쳐

by Client. DJ 2022. 3. 5.
반응형

화면 스크린 찍어오기

스크린 캡쳐

실행 중인 게임에서 스크린샷을 찍을 때 사용되는 코드입니다.

코드

/// <summary>
/// 스크린샷 저장
/// </summary>
/// <param name="onFinished">텍스쳐 생성 콜백</param>
/// <returns></returns>
private IEnumerator Screenshot(Action<Texture2D> onFinished)
{
    yield return new WaitForEndOfFrame();
    // 텍스쳐 생성
    Texture2D screenTex = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);

    // 스크린샷 영역 설정
    Rect area = new Rect(0f, 0f, Screen.width, Screen.height);

    // 현재 화면의 픽셀을 읽어온다.
    screenTex.ReadPixels(area, 0, 0);

    // byte[]로 변환 뒤, 이미지를 읽어온다.
    screenTex.LoadImage(screenTex.EncodeToPNG());

    onFinished?.Invoke(screenTex);
}

예제

StartCoroutine(Screenshot((texture2D) =>
{
    // 스크린샷(texture2D)을 사용할 수 있는 시점
}));

이해

랜더링 중에는 최종적으로 다 그리고 나서 이후인 시점에서 스크린샷을 찍습니다. 이를 위해 'new WaitForEndOfFrame()'를 먼저 호출해 준뒤 화면을 읽어옵니다.

반응형

댓글