CPU를 느리게 만드는 데이터
애니메이션
매 프레임마다 애니메이션 커브를 샘플링,
본 갯수에 따른 애니메이션 커브 증가,
Skinned Mesh,
Blend Shape(Facial, Customize),
Constraint,
애니메이션 커브 샘플링
문제점: 매 프레임마다 각 본(Bone)에 대해 커브를 샘플링하여 위치/회전/스케일을 계산함
영향: 본 수가 많을수록 연산량 증가
최적화 팁:
- 애니메이션 압축 설정
- 루트 모션 제거 또는 제한
- 불필요한 커브 제거
본(Bone) 수 증가
- 문제점: 각 본마다 트랜스폼 계산이 필요하며, 계산량은 선형적으로 증가
- 영향: CPU에서 처리할 트랜스폼 연산 급증
- 최적화 팁:
- LOD에 따라 본 수 줄이기
- 사용하지 않는 본 제거
Skinned Mesh
- 문제점: 매 프레임마다 본의 변형을 따라 버텍스를 재계산
- 영향: 캐릭터가 많을수록 CPU 또는 GPU 부하
- 최적화 팁:
- GPU 스키닝 강제 사용
- Animator Culling Mode 설정
- 가시성 체크로 미사용 캐릭터 Culled 처리
Blend Shape (모프 타겟)
- 문제점: 각 프레임마다 버텍스 단위로 계산
- 영향: 얼굴 표정, 커스터마이징 요소가 많을수록 부하
- 최적화 팁:
- GPU Morph 지원 사용
- 불필요한 Blend Shape 제거
- 사용 시점에만 활성화
Constraint (Parent, Aim, etc.)
- 문제점: 런타임 트랜스폼 관계 계산
- 영향: 실시간 트랜스폼 연산으로 CPU 소모
- 최적화 팁:
- Bake 후 Constraint 제거
- 런타임에서 최소한으로만 사용
CPU 파티클
다수의 파티클 처리
- 문제점: 위치, 속도, 수명 등의 연산을 CPU에서 처리
- 영향: 수천 개 이상이면 심각한 부하
- 최적화 팁:
- GPU 기반 파티클 사용 (e.g. VFX Graph)
- 수명 짧은 파티클 위주 사용
파티클 충돌 처리
- 문제점: 파티클마다 Collider 체크를 하면 물리 연산 발생
- 영향: 연산량 급증
- 최적화 팁:
- Collision 기능 최소화
- 시각 효과로 대체
스크립트 기반 제어
- 문제점: 각 파티클마다 스크립트 연산 수행 시 CPU 부하
- 영향: 조건 분기 많을수록 연산량 증가
- 최적화 팁:
- 파티클 그래프 내 논리 처리
- 가능하면 GPU에 연산 위임
Physics
Collider
- 문제점: 충돌체가 복잡할수록 충돌 계산량 증가
- 영향: Mesh Collider 등은 특히 고비용
- 최적화 팁:
- Primitive Collider(Box, Sphere) 사용
- 정적인 오브젝트는 Static 처리
Rigidbody
- 문제점: 중력, 마찰, 충돌 등 매 프레임 물리 계산
- 영향: 활성 상태 객체가 많을수록 성능 저하
- 최적화 팁:
- 필요 없는 Rigidbody 제거
- Sleep 상태 유도
- Kinematic 사용 고려
Joint, Spring 등
- 문제점: 물리적 관계 설정 시 연산 복잡도 상승
- 영향: 연결 수가 많을수록 연산 시간 증가
- 최적화 팁:
- 최소한의 연결만 사용
- 필요 시 시뮬레이션 대신 애니메이션으로 대체
UI
Canvas Rebuild (캔버스 리빌드)
- 문제점:
Canvas
가 변경될 때마다 전체 UI를 다시 계산 - 영향: Canvas 내 요소 수가 많을수록 리빌드 비용 급증
- 최적화 팁:
- 자주 변경되는 UI는 별도 Canvas로 분리
- Layout 변경 최소화
Canvas.SetActive()
대신 요소 단위 활성/비활성 권장
Layout Components (Vertical/Horizontal Layout, ContentSizeFitter 등)
- 문제점: 프레임마다 동적으로 사이즈 계산
- 영향: 복잡한 UI 구조에서 매 프레임 레이아웃 재계산 발생
- 최적화 팁:
- LayoutGroup + ContentSizeFitter 조합 최소화
- 동적 UI는 직접 계산하여 적용
- 프리팹 Bake된 고정형 UI 구성 권장
Graphic Raycaster
- 문제점: 매 프레임마다 레이캐스트로 모든 UI 요소 검사
- 영향: UI 요소가 많을수록 검사 비용 증가
- 최적화 팁:
- 필요 없는
Raycast Target
비활성화 - 터치 대상 UI만 Raycast 허용
- 필요 없는
Text 요소 (특히 Dynamic Font 사용)
- 문제점: TextMeshPro, Unity Text 모두 리빌드 시 폰트 생성 연산 발생
- 영향: 실시간 텍스트 변경이 많은 경우 CPU 부하
- 최적화 팁:
- Text 캐싱
- Dynamic 대신 Static Font Asset 사용
- 빈번한 변경 피하기
Animation & Tween
- 문제점: UI에 적용된 애니메이션이나 Tween이 매 프레임 계산
- 영향: 다수의 애니메이션 오브젝트가 동시에 동작 시 CPU 비용 누적
- 최적화 팁:
- 비동기 트리거 방식 사용
- 불필요한 Tween 제거
- DOTween 등 경량화된 툴 적극 활용
댓글남기기