✅ 오늘의 학습 목표
1. 그래픽 최적화
2. 맵 꾸미기
3. 버그 수정
1. 그래픽 최적화
1. 해상도 변경
높은 해상도에서 게임을 실행할 경우 게임이 느려진다면
게임의 해상도를 낮춰 게임의 성능을 향상시킬 수 있다.
[PC에서 해상도 변경]
Screen.SetResolution(1280, 720, false);
URP의 경우 URP Asset 파일 속성에서 Quality > Render Scale 값 변경을 통해 게임 화면의 렌더 스케일을 조절할 수 있다.
[모바일에서 해상도 변경]

Edit > Project Settings > Player > Android > Resolution And Presentation 에서 변경
- Resolution Scaling Mode
- Disabled: 해상도 스케일링 안 함 (기본값)
- Fixed DPI: 원하는 DPI를 고정 값으로 설정
- Custom: 코드로 동적 제어
- Target DPI (Resolution Scaling Mode를 Fixed DPI로 설정한 경우에만 활성화됨)
- 예: 240, 320, 480 등
- 값이 낮을수록 해상도는 낮아지고 성능은 높아짐
2. Texture
텍스처 포멧은 프로젝트 저장공간의 용량을 줄여준다.
PSD나 PNG, JPEG 포맷은 빌드 시에 GPU와 호환되는 형식으로 다시 압축되는데
유니티의 압축 방식은 외부 툴(포토샵)의 결과와 다를 수 있기 때문에 가급적이면 최적화된 외부 툴에서 제작 후 사용하는 것이 좋다.
- 모바일에서는 텍스처 사이즈가 2048을 넘지 않도록 한다.
- 텍스쳐는 압축을 위해 2의 n승 크기로 설정한다.
- Atlas 기능을 이용해 Sprite는 묶어서 사용한다.
- Read/Write 기능을 비활성화 한다.
- Mip Maps이 불필요한 경우 비활성화 한다. (거리에 따라 연산하므로 더 많은 메모리를 사용한다.)
- 압축은 ASTC 방식을 선택하면 IPhone, Android 모두 대응 가능하다.
[Anisotropic 필터링]

애니소트로픽 필터링은 사물을 비스듬하게 봤을 때 텍스처의 품질을 향상 시키는 기능이다.
[아틀라스 이미지]
아틀라스 이미지는 여러 텍스처를 한 장의 큰 텍스처로 합치는 것을 의미한다.
드로우콜을 줄일 수 있어 CPU 연산을 줄이게 된다.
다만 여러장의 텍스처가 한장의 이미지로 합쳐진 형태이기 때문에 메모리 사용량이 줄어들진 않는다.
[Sparse Texturing]

Project Settings > Player > Other Settings > Virtual Texturing 에서 변경
Unity에서 스파스 텍스처링 또는 타일드 텍스처링은 대형 텍스처를 GPU 메모리에 전부 올리지 않고 필요한 부분만 불러와 사용하는 최적화 기법이다.
주로 4K ~ 16K 텍스처처럼 매우 큰 텍스처를 쓸 때 유용하다.
[Procedural Material]
일반 텍스처는 이미지 파일로 저장되어 있지만
Procedural Material은 텍스처를 이미지가 아니라 수학적 절차(프로시저)로 생성한다.
- 벽돌 패턴, 나무 무늬, 금속 표면 등을 매번 계산으로 생성
- 사용자가 매개변수(색상, 거칠기, 반복 등)를 조정하여 텍스처를 실시간 생성 가능
3. Mesh
폴리곤 수가 적을수록 게임 성능에는 좋겠지만 아무래도 시각적으로 좋지 않아 몰입도가 떨어질 수 있다.
이 때 하이폴리곤으로 제작해서 만들어진 정보를 노멀맵 형태로 사용하여 미들/로우 폴리곤으로 낮추는 것이 좋다.

- Read/Write 비활성화
- Disable rigs and BlendShapes -> Rigging이나 Blender Shape을 사용하지 않을 경우 끄기
- Disable normals and tangents, if possible -> 빠르게 움직이는 오브젝트의 경우 normal과 tangent 비활성화
- Optimize Mesh 활성화
4. Model
[Scale]
오브젝트가 너무 크거나 작을 때 크기 변경을 위해서
트랜스폼의 스케일 값을 변경하게 되면 물리 연산에 영향을 줄 수 있다.

따라서 스케일 조절이 필요하다면 모델의 Scale Factor 값을 변경해주는 것이 좋다.
[Rig]

Humanoid 설정은 Generic에 비해 30~50% 정도 메모리를 더 사용하므로
애니메이션 리타겟팅이 없다면 Generic을 사용하는 것이 좋다.
5. V Sync


V Sync는 Vertical Synchronization을 의미하는 설정으로
GPU의 화면 갱신 주기를 모니터의 수직 리프레시 주기에 맞추어 동기화 하는 설정이다.
Sync를 설정하지 않을 겅유 GPU가 화면을 출력하는 도중 모니터가 다음 화면을 갱신하는 과정에서
동기화가 이루어지지 않아 화면이 찢어진 듯한 현상이 나타나게 된다.
모바일의 경우 OS가 디스플레이와 자동 동기화 하기 때문에 항상 V Sync 상태이다.
| 값 | 설명 |
| Dont Sync | 제한 없음 |
| Every V Blank | 1 프레임마다 동기화 |
| Every Second Blank | 2 프레임마다 동기화 |
2. 맵 꾸미기
🥕 예행 작업
1. Asset 다운로드Starfield Skybox | 2D 하늘 | Unity Asset Store
Elevate your workflow with the Starfield Skybox asset from PULSAR BYTES. Browse more 2D 텍스처 및 소재 on the Unity Asset Store.
assetstore.unity.com
1. 맵 높낮이 바꾸기

맵의 높낮이를 바꾸기 위해서는
프로빌더의 Plane Settings 값을 우선 원하는 크기로 맞춰준다.

그런다음 원하는 위치의 Point를 선택한 후 높낮이를 조절해줄 수 있다.
이 외에도 Polybrush 툴을 사용해서 변경해주는 방법도 있다.
2. Skybox 변경

다운로드 받은 skybox를 Light > Environment > Skybox Materal 에서 변경해주었다.
이때 스카이박스의 쉐이더는 스카이박스여야 한다.
3. Light Bake

어느정도 맵을 꾸민 다음에는
Light를 베이크해주었다.

그리고 설치한 오브젝트의 창에 빛 반사를 주기 위해서
Reflection Probe도 배치해주었다.
4. Build

빌드를 해주기 전에 앞서 빌드와 동시에 프로파일러를 활성화시켜주기 위해서
빌드 셋팅에서 프로파일러를 체크해주었다.
3. 버그 수정
1. PlayerController.cs

2. EnemyController.cs


'Unity > 멋쟁이사자처럼 부트캠프' 카테고리의 다른 글
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(104일차/Final Project) - 책 넘기는 연출 / 귀신 아이템 연출 (0) | 2025.10.24 |
|---|---|
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(103일차) - 게임 최적화 (0) | 2025.10.23 |
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(101일차) - [3D 게임] 맵 최적화 & Unity Profiler(프로파일러) 확인법 (0) | 2025.10.21 |
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(100일차) - [3D 게임] 게임 최적화를 위한 자료구조 학습 (0) | 2025.10.20 |
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(99일차) - [3D 게임] 버그 수정 및 Stage 2 개발 (0) | 2025.10.19 |