-
[게임엔진활용] 1-2강 해상도1[DSU] 게임엔진활용 2026. 3. 12. 18:53728x90
게임 제작 초기에 해상도를 고려하여야 합니다.
게임 장르, 사용자 타겟팅 등 여러가지 상황을 고려해서 저해상도, 고해상도를 결정하여야 합니다.
또한 해상도를 가변적인지, 고정적인지에 따라 개발자의 노력에 영향을 주게 됩니다.
이번 예시에는 1280 x 720 해상도로 고정하는 방법에 대해 알아보겠습니다.
MainCamera.cs 파일입니다.
1-1강 코드에서 Start와 OnDestory 코드만 추가했습니다.
12345678910111213141516171819202122232425262728293031323334353637383940414243using UnityEngine;using UnityEngine.InputSystem;public class MainCamera : MonoBehaviour{public int devWidth = 1280, devHeight = 720;public RenderTexture rt { get; private set; }Camera c;// Start is called once before the first execution of Update after the MonoBehaviour is createdvoid Start(){rt = new RenderTexture(devWidth, devHeight, 24,RenderTextureFormat.ARGB32, RenderTextureReadWrite.Default);rt.Create();c = GetComponent<Camera>();c.targetTexture = rt;}void OnDestroy(){if (rt != null){rt.Release();Destroy(rt);}}// Update is called once per framevoid Update(){float x = 0, y = 0, z = 0;if (Keyboard.current.aKey.isPressed) x = -1;else if (Keyboard.current.dKey.isPressed) x = 1;if (Keyboard.current.wKey.isPressed) z = 1;else if (Keyboard.current.sKey.isPressed) z = -1;if (Keyboard.current.eKey.isPressed) y = 1;else if (Keyboard.current.qKey.isPressed) y = -1;transform.Translate(new Vector3(x, y, z) * 5f * Time.deltaTime);}}cs No cameras rendering이 출력되는것이 당연합니다.
렌더링 카메라의 targetTexture가 생성한 RenderTexture rt 가 지정되어 있기 때문에, Hierachy에 있는 모든 오브젝트를 rt에 모두 그리게 되기 때문에, 실제 화면에는 어떠한 것도 디스플레이하지 않습니다.
참고로, 렌더링 카메라의 targetTexture가 null이어야만 실제 화면에 디스플레이합니다.

그럼 이번에는 MainCamera에서 생성한 RenderTexture rt를 OnGUI함수를 통해서 실제 화면에 그려보겠습니다.
- Hierachy 우클릭 후, Create Empty를 생성하고, RenderView 명명합니다.
- Assets>Scripts 우클릭 후, MonoBehaviour Script를 생성하고, RenderView.cs 명명합니다.
- RenderView에 RenderView.cs를 Add Component 연동합니다.

RenderView.cs 파일입니다.
RenderView.cs 내 MainCamera mc를 Start에서 생성하고, OnGUI에서 그립니다.
Old버전에서 사용하던 FindObjectOfType함수는 신규 버전에서도 여전히 잘 동작하지만 Deprecated되었으니, 새로운 함수 FindFirstObjectByType 를 사용하는것을 추천합니다.
12345678910111213141516171819202122232425262728293031using UnityEngine;public class RenderView : MonoBehaviour{public MainCamera mc;// Start is called once before the first execution of Update after the MonoBehaviour is createdvoid Start(){mc = FindFirstObjectByType<MainCamera>();}// Update is called once per framevoid Update(){}void OnGUI(){if (mc != null && mc.rt != null){GL.Clear(true, true, Color.black);GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height),mc.rt, ScaleMode.StretchToFill);}}}cs 
그리기는 성공했지만, 그림이 세로로 늘어진 점, No Camera rendering이라는 글자가 디스플레이 됩니다.
그러나 실행파일을 만들어서 직접 실행해보면 아주 동작 잘 하는것을 알수 있으며, Unity 에디터에서만 그렇게 보인다는것을 알 수 있습니다.
File>Build Profiles으로 창을 엽니다. 여러 플랫폼을 지원하는 만큼 다양한 플랫폼이 보입니다.
오른쪽 하단에 Build을 누르고, exe파일이 저장될 폴더를 지정하면 됩니다.

계속해서 테스트를 해야 할텐데, 에디터에서 실행할때마다 No Camera rendering문구가 뜬다면 보기 좋지 않으니, 제거하도록 하겠습니다.
Hierachy 우클릭>Camera 생성 후, Dummy Camera로 명명합니다. 그리고 Inspector에서 Culling Mask를 Nothing으로 변경하면 완료됩니다.

유니티 최신 버전 문서에는 사라진 Script Lifecyle Flowchart
게임 제작시 전반적인 흐름을 이해하는데 도움이 됩니다.
https://docs.unity3d.com/kr/2018.4/Manual/ExecutionOrder.html

'[DSU] 게임엔진활용' 카테고리의 다른 글
[게임엔진활용] 2강 게임 개발 해상도(더블버퍼링, 뷰포트) (0) 2026.03.25 [게임엔진활용] 1-5강 쉐이더토이 적용 (0) 2026.03.16 [게임엔진활용] 1-4강 쉐이더로 효과 만들기 (1) 2026.03.12 [게임엔진활용] 1-3강 해상도2 및 쉐이더 (0) 2026.03.12 [게임엔진활용] 1-1강 프로젝트 생성 및 키보드 (0) 2026.03.12

