코딩의 신 72

김동관·2026년 1월 16일

오늘 한 일

Unity의 최적화 방식

게임을 만들다보면 최적화는 무조건 필요로 하게 되어 있습니다.
게임을 최적화하지 않는다면 게임에도 찌꺼기들이 쌓이고 용량이 커질 수 있습니다.
그러면 unity의 최적화 방식에는 무엇이 있는지 알아봅시다.

렌더링(Rendering) 최적화

① Draw Call 줄이기 (가장 중요)

문제

CPU → GPU로 보내는 호출 비용이 큼

오브젝트 많을수록 프레임 급감

해결 방법

Static Batching

Dynamic Batching

GPU Instancing

Mesh Combine

Static Batching란?

움직이지 않는 오브젝트

빌드 시 자동 병합

체크: GameObject → Static 체크
GPU Instancing (Unity에서 매우 중요)

같은 Mesh + Material 반복 사용

Material → Enable GPU Instancing 체크

② Occlusion Culling

카메라에 안 보이는 오브젝트는 렌더링 X

Window → Rendering → Occlusion Culling

③ LOD Group

거리 따라 모델 품질 변경

LOD0 (근거리)
LOD1 (중거리)
LOD2 (원거리)

스크립트 / CPU 최적화

① Update() 남발 금지

문제

매 프레임 실행 → CPU 폭발

대안

이벤트 기반

코루틴

Invoke / Timer

// X
void Update() { CheckSomething(); }

// o
void OnQuestUpdated() { CheckSomething(); }

② GC (Garbage Collection) 최소화

문제

GC 발생 시 프레임 드랍 (스파이크)

new
string +
LINQ
foreach (특정 상황)

대안

객체 재사용

StringBuilder

캐싱

③ 캐싱 (GetComponent 금지 패턴)

// x
void Update() {
    GetComponent<Rigidbody>();
}

// o
void Awake() {
    rb = GetComponent<Rigidbody>();
}

메모리 최적화

① Object Pooling (필수)

몬스터, 투사체, 이펙트

Instantiate / Destroy x
Pool Get / Return o

② Texture 최적화

해상도 줄이기

압축 포맷 사용

Mobile: ETC / ASTC
PC: DXT5

③ Addressables

필요할 때만 로드

메모리 절약 + 로딩 관리

물리(Physics) 최적화

① Layer Collision Matrix

Project Settings → Physics

충돌 필요 없는 레이어 끄기

② FixedUpdate 최소화

물리 연산은 비쌈

필요 없는 Rigidbody 제거

③ Raycast 남발 주의

Physics.Raycast x (Update)

UI 최적화

① Canvas 분리 (매우 중요)

하나의 Canvas = 전체 재빌드

TopUI / HUD / Popup / WorldUI 분리

② LayoutGroup / ContentSizeFitter 최소화

실시간 계산 비용 큼

고정 UI는 수동 배치

애니메이션 최적화

Animator Layer 최소화

Avatar Mask 사용

불필요한 IK 비활성화

씬 / 월드 구조 최적화

① 씬 분할 + Additive Load

SceneManager.LoadScene("Map_01", LoadSceneMode.Additive);

② Streaming / Chunk 방식

거리 기반 활성화

멀면 Disable / Unload
가까우면 Enable / Load

프로파일링 도구

Unity Profiler

CPU / GPU / Memory / Rendering

Frame Debugger

Draw Call 분석

Deep Profile (개발 중에만)

최종정리

“Unity 최적화는 렌더링, CPU, 메모리, 물리, UI 관점에서 진행하며
Draw Call 감소, Object Pooling, Update 최소화, GC 관리,
그리고 Profiler 기반 병목 분석이 핵심"

profile
아이디어 뱅크

0개의 댓글