화면을 캡쳐가 필요한 일이 종종 있다. 간단한 사례로,
1. Screen Shot 을 파일로 남기기 위해
2. 게임 화면을 캡쳐한 뒤 가공해서 활용하기 위해
필요한 기능이 디테일하게 조금씩 달라질 수 있음.
화면 캡쳐를 위한 두 가집 방향성을 제시.
1. ScreenCapture 클래스 정적 메소드 사용
아래 함수를 활용해서 현재 화면을 바로 캡쳐할 수 있다. 아래 샘플 코드는 Texture 타입으로 반환하는데, 다른 함수도 있으니 참고.
Texture2D texture = ScreenCapture.CaptureScreenshotAsTexture();
https://docs.unity3d.com/ScriptReference/ScreenCapture.html
이 때, 이 함수는 현재 화면을 그대로 캡쳐하기 때문에 GUI 등의 내용도 모두 한 번에 캡쳐된다. 말 그대로 스크린샷 파일을 남기고 싶을 때 간단하게 활용할 수 있음.
Texture2D texture = ScreenCapture.CaptureScreenshotAsTexture();
targetRenderer.material.mainTexture = texture;
2. 카메라의 Render() 함수로 RenderTexture 에 그리기
호출 시점의 카메라 화면을 그리는 방법. Camera 의 targetTexture 를 RenderTexture로 설정하고, 직접 Camera.Render() 함수를 호출. 이렇게 카메라의 targetTexture 를 얻어와서 RenderTexture.active 에 셋팅하고 Texture2D.ReadPixels 로 읽어어온다.
RenderTexture renderTexture = new RenderTexture(Screen.width, Screen.height, 24);
Camera.main.targetTexture = renderTexture;
Camera.main.Render();
Camera.main.targetTexture = null;
RenderTexture.active = renderTexture;
Texture2D texture = new Texture2D(Screen.width, Screen.height, TextureFormat.ARGB32, false);
texture.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
texture.Apply();
targetRenderer.material.mainTexture = texture;
RenderTexture.active = null;
게임 개발에 필수적인 내용을 담는 명서들을 소개합니다.
<유니티 교과서 개정6판>(유니티 최신 버전)
https://link.coupang.com/a/be3P0t
<대마왕의 유니티 URP 셰이더 그래프 스타트업>
https://link.coupang.com/a/bs8qyC
<리얼-타임 렌더링(REAL-TIME RENDERING) 4/e>
https://link.coupang.com/a/8VWas
<이득우의 게임 수학:39가지 예제로 배운다! 메타버스를 구성하는 게임 수학의 모든 것>
https://link.coupang.com/a/9BqLd
유니티 에셋 스토어 링크
https://assetstore.unity.com?aid=1011lvz7h
(링크를 통해 도서/에셋 구입시 일정액의 수수료를 지급받습니다.)
'유니티 엔진 (Unity Engine)' 카테고리의 다른 글
[Unity] Dithering 셰이더 함수, Dither 노드, Dither thresholds array (0) | 2024.03.13 |
---|---|
[Unity] 밸브사의 포탈(Portal) 게임의 포탈 메카닉스 만드는 방법 (자료) (0) | 2024.03.13 |
[Unity] Working with Cinemachine Cameras Overview (시네머신 카메라 작업 개요) (0) | 2024.03.12 |
[Unity] FOW(Fog of War) 전장의 안개 (0) | 2024.02.06 |
[Unity] VR 기초, 방 탈출 게임 프로젝트 학습 코스 스크랩 (0) | 2024.01.30 |
[Unity] Inspector Custom Editor 에 추가 버튼, 삭제 버튼 추가 (0) | 2024.01.15 |
[Unity] Inspector 에 Addressable AssetReference 배열 노출시키기 (0) | 2024.01.15 |