말감로그

[Unity] 유니티 성능 최적화 방법 (렌더링, 메모리) 본문

Unity

[Unity] 유니티 성능 최적화 방법 (렌더링, 메모리)

habbn 2025. 1. 10. 20:44
728x90

렌더링 최적화

Clipping 

화면에 보이지 않는 부분을 잘라내는 방식으로, 카메라 시야 외부에 있는 물체는 Clipping을 통해 잘라내어 렌더링 하지 않게 만든다.

 

Occlusion Culling

가려진 객체들을 렌더링하지 않도록 하는 기법으로, 한 객체가 다른 객체를 가릴 때 보이지 않는 객체를 렌더링하지 않는다.

 

Fruston Culling

카메라 시야 범위 내에 있는 객체들만 렌더링 하는 기법.

 

*절두체(Frustum)는 평면으로 표현되는 부분을 뜻한다. 즉, 시야에 보이는 영역을 표현한 입체를 뜻한다.


메모리 최적화

 

1. 가비지 컬렉터의 퍼포먼스 스파크 현상

가비지 컬렉터는 더 이상 참조되지 않는 객체를 찾아서 자원을 회수하는 역할을 한다.

이 과정에서 cpu 리소스를 많이 소모하고 일시적으로 성능저하가 발생할 수 있는데 이를 퍼포먼스 스파크 현상이라 한다.

 

이를 해결하기 위해 힙 메모리 사용을 최소화하고, 클래스와 구조체 활용을 최적화하는 방법을 사용하였다.

 

1. 힙 메모리 사용 최적화

- 힙 메모리는 동적 할당된 메모리로, 가비지 컬렉터가 관리하는 영역이다. 힙 메모리에 저장되는 클래스 객체 , 배열,리스트 , 딕셔너리 사용을 최소화

 

2. 클래스와 구조체 활용 최적화

클래스는 힙에 할당되고 구조체는 스택에 할당되기 때문에 구조체 사용 권장


*스택은 정적 메모리 할당, 값 타입의 int , float, char ,struct 데이터가 저장되고, 지역변수, 매개변수가 저장된다.

 

3. 객체 풀(오브젝트 풀링) 사용

객체를 매번 새로 생성하고 파괴하는 대신 객체 풀에 객체를 미리 만들어놓고 필요할 때마다 재사용하는 방식

게임에서 총알이나 적 NPC 객체에 주로 사용.

 

 

 

728x90