Blueprint에서는 내가 BP_ThirdPersonCharacter를 상속 받은 TestActor를 로드하려면
BP_ThirdPersonCharacter 강제로 로드한다.
근데 BP_ThirdPersonCharacterd의 크기고 상당한 것을 볼 수 있다. 그래서 규모가 큰 게임에서는 Blueprint를 지양하는 것이다. 그렇게 오브젝트 뿐 아니라 함수를 호출할 때도 동일하게 적용된다.
Hard Reference
Hard Reference는 직접 참조로, 참조된 모든 오브젝트를 즉시 로드한다.
예를 들어 BP_ThirdPersonCharacter에 다른 에셋을 Hard Reference로 설정하면 해당 캐릭터와 함께 모든 관련 에셋도 메모리에 로드된다.
장점
- 오브젝트에 쉽게 접근 가능하며, 참조한 에셋이 이미 메모리에 있으므로 언제든지 사용 가능하다.
- 게임 로직이나 기능이 언제든지 즉시 동작해야 하는 중요한 에셋에서 유용합니다.
단점
- 모든 참조된 에셋이 한꺼번에 로드되므로 로딩 시간이 길어지거나 메모리 낭비가 발생할 수 있다. (로딩할 때 참조된 모든 정보를 로드해야되니까)
Soft Reference
Soft Reference는 필요할 때만 수동으로 로드할 수 있다. 참조된 에셋이 즉시 로드되지 않고, 실제로 사용할 때 비동기적으로 로드하는 방식이다.
장점
- 필요한 시점에서만 에셋을 로드하므로 초기 메모리 소비를 줄이고 로딩 시간을 최적화할 수 있다.
- 게임의 특정 상황에서만 필요한 에셋에는 유용하다.
단점
- 매번 수동으로 로드해야 하므로 코드가 더 복잡해질 수 있다.
- 타이밍 이슈가 발생할 수 있다. 특히 중요한 기능에서 Soft Reference를 잘못 관리하면 순간적으로 필요한 에셋이 로드되지 않아 문제를 일으킬 수 있습니다.
그래서 언제 무엇을 사용할까?
그래서 판단은 어떻게 하냐?
Hard Reference: 주요 에셋 (주요 캐릭터 애니메이션, UI)
Soft Reference: 지금 당장 필요하지 않은 에셋, 추가적인 기능에만 사용하는 에셋 (특정 이벤트의 특수 효과나 레벨 전환 시 등장하는 에셋들이 이에 해당할 수 있습니다. )
Blueprint의 사용을 최적화 방법
Blueprint에 로직을 부모 클래스에만 추가하기
BP의 부모 클래스에만 로직을 추가하면 자식 클래스에 불필요한 코드 중복을 줄이고, 메모리 사용과 로딩 시간을 최적화할 수 있다.
중요한 오브젝트와 기능은 C++로 구현하기
BP object reference 피하기
객체 간의 참조를 줄이거나 인터페이스를 이용하여 의존성을 최소화하자. 모든 오브젝트가 메모리에 로드되어 비효율적으로 프로그램이 실행될 수 있다!
'UE5(언리얼)' 카테고리의 다른 글
[언리얼5/UE5] SpawnActor사용시 주의 (안움직임) (1) | 2024.11.14 |
---|---|
[언리얼/UE5] 디버거 헬퍼 (0) | 2024.11.12 |
[언리얼5/UE5] 채팅창 만들기 (EditableText) (7) | 2024.11.07 |
[언리얼5/UE5] Authority, Simulated Proxy, Autonomous Proxy (0) | 2024.10.14 |
[언리얼5/UE5] 죽으면 무기 떨어뜨리기 + 무기 재사용 (7) | 2024.10.09 |