인프런 커뮤니티 질문&답변

조전욱님의 프로필 이미지
조전욱

작성한 질문수

유니티 Addressable 을 이용한 패치 시스템 구현

Addressable 핵심 런타임 API

실제 게임에서는 어느 시점에 로드를 하고 해제를 해야 하나요??

해결된 질문

작성

·

389

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

Level 별로 씬이 나눠져 있다고 할때 어느 시점에서 에셋을 로드해야 하고 어느 시점에서 게임오브젝트를 인스턴트 해야하는지 궁금합니다. 예를 들면 씬이 로드될때 거기서 사용하는 에셋들을 로드하고 게임캐릭터가 소환될때 인스턴트를 하고 씬에서 해당 캐릭터가 더는 사용되지 않을때 인스턴트를 해제하고 씬이 닿힐때 에셋도 해제한다던지 등이요.

 

또한 번들은 어떤 기준으로 나눠야 하는지도 궁금합니다.

답변 1

1

제이스님의 프로필 이미지
제이스
지식공유자

어느 시점에 Asset 을 Load 하고 어느 시점에서 게임 오브젝트를 Instantiate 해야하는지 ?

  • 프로젝트따라 케바케라 생각합니다 . 예를들어 MMORPG 같은 경우에는 맵을 이동할때마다 해당 맵에서 사용할 Asset 들을 미리 Load 하여 실제로 Instantiate 를 할때 Load 하는데 사용되는 딜레이를 최소화한다거나 하는 식으로 말입니다.

  • 또는 Load 하는동안 Dummy 를 이용해 보여주거나 아예 보이지 않아도 된다라고 한다면 Load 되지 않은 상태에서 최초로 Instantiate 할때 Load 도 동시에 되게끔 설계할 수도 있을것 같습니다. (Addressable 에서 instantiate 시 내부적으로 필요하다면 load 도 같이 됨)

해제 시점

  • 이 부분도 케바케인듯 합니다. Scene 이동을 하였는데 다음 Scene 에서도 지금 Load 된 Asset 들을 사용해야한다면 Release 처리하지않고 유지할 수도 있겠습니다. 또한 Scene 이 새로 Load 되어 현재 Scene 에 존재하는 Addressable API 를 통해 Instantaite 된 오브젝트들은 오브젝트가 파괴되면서 자동적으로 reference count 가 차감되는 것을 참고해주면 좋을것 같습니다.

 

번들을 나누는 기준

  • 마찬가지로 케바케입니다. 개인적으로는 어떠한 기준을 통해 같이 사용될 Asset 들을 Bundle 로 묶어 관리하는 것이 성능적인 면에서 좋을 것 같습니다. 하지만 이 방법에도 큰 단점이 있는 것이 , 여러 Bundle 로 나누면 관리에 대한 복잡도나 번들 빌드 시간이 늘어난다거나 하는 단점이 있겠습니다. 때문에 런타임 성능과 개발 복잡도를 두고 나눠 질수도 있을것 같네요.

  • 제가 개발에 참여했던 MMORPG 게임에서는 UI 관련 리소스 , Map 별로 존재하는 몬스터 및 기타 오브젝트 리소스들, 동영상 리소스 등으로 나누어 관리했던 것 같습니다.

조전욱님의 프로필 이미지
조전욱

작성한 질문수

질문하기