반응형
스크린 캡쳐
실행 중인 게임에서 스크린샷을 찍을 때 사용되는 코드입니다.
코드
/// <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()'를 먼저 호출해 준뒤 화면을 읽어옵니다.
반응형
'Utils' 카테고리의 다른 글
Unity, 플레이 모드가 아닌 상태에서 코루틴 사용하기 (2) | 2022.04.06 |
---|---|
NGUI Custom Extension Tool (0) | 2022.03.24 |
Unity, Animator 상태 변환 완료 때까지 기다리기 (확장함수) (0) | 2022.02.23 |
C#, DateTime 이번 달의 첫날, 말일 구하기 (2) | 2022.01.25 |
C#, 커스텀 밴치마크 라이브러리 (함수 테스트 도구) (2) | 2022.01.16 |
댓글