게임 속의 모든 리소스 관리가 힘들때 나타났다!

Addressable 시스템이란?
Unity에서 리소스를 효율적으로 관리하고 로드하는 시스템이 Addressable입니다.
게임 안의 그림, 소리, 모델 같은 것들을 주소(Address)로 불러와서 로드하는 방식입니다.
Addressable 빌드 과정
게임 빌드를 하면 번들 파일들이 생기는데, 이 번들은 여러 리소스들이 모인 파일들입니다.
이때, 게임 안의 리소스가 들어있는 번들들의 정보를 파일로 저장합니다.
settings.json과 catalog.json 파일이 생성되는데,
이 파일들은 리소스가 어디에 있는지, 어떻게 불러올 수 있는지에 대한 정보를 담습니다.

Addressable 시스템 초기화
게임을 실행할 때, Addressable 시스템이 먼저 InitializeAsync() 라는 걸 실행합니다.
이걸 하면, 앞에서 만들어진 **catalog.json**을 읽어와서 번들 정보(리소스가 어디에 있는지, 키 값은 뭔지 등)를 기억합니다.
예를 들어, "Cube"라는 리소스가 있다고 하면, 이 리소스를 어떻게 불러올지 정보를 여기서 가져옵니다.
리소스 로딩 과정
Addressable 시스템은 다음 세 가지 중요한 요소를 통해 리소스를 불러옵니다.
ResourceLocation (리소스 위치 정보)
이건 쉽게 말해, 리소스를 불러올 때 필요한 모든 정보가 담긴 '지도' 같은 역할을 합니다.
예를 들어, "Cube"라는 리소스를 로드하려면 이 리소스가 어디에 있고, 어떤 순서로 불러와야 하는지, 혹시 다른 파일에 의존하는지(다른 파일이 있어야 로드할 수 있는지), 또 어떤 방법으로 불러올지에 대한 정보가 담겨 있습니다.
ResourceLocator (리소스 찾는 사람)
Locator는 '주소 찾는 사람'입니다. "Cube"라는 이름을 주면, 이 사람이 그 이름을 보고 어디에 있는지 찾아줍니다.
"Cube"라는 키(Key)를 ResourceLocation으로 변환해서, 그 리소스가 어디에 있는지, 어떻게 불러와야 할지 알려줍니다.
ResourceProvider (리소스 제공자)
Provider는 실제로 리소스를 불러오는 사람입니다.. Locator가 찾은 정보를 기반으로, 그걸 실제로 메모리로 불러와서 게임에 쓸 수 있게 만들어 줍니다.
전체 흐름
키 값으로 리소스 요청: 예를 들어 "Cube"라는 리소스를 불러오고 싶다고 하면, 게임은 이 키 값을 사용합니다.
Locator가 리소스 위치 찾기: Locator는 "Cube"가 어디에 있는지 찾고, 그 정보를 ResourceLocation으로 변환합니다.
Provider가 리소스 로드: ResourceLocation을 받은 Provider가 실제로 그 리소스를 메모리에 불러옵니다. 이제 게임에서 이 리소스를 사용할 수 있습니다.
정리
ResourceLocation: 리소스가 어디 있는지, 어떻게 불러와야 하는지 정보가 다 들어있습니다.
ResourceLocator: 키(Key)값을 보고, 그 리소스가 어디 있는지 찾아주는 역할입니다.
ResourceProvider: 찾은 리소스를 실제로 불러오는 역할을 합니다.
이런 흐름 덕분에, 게임 안의 리소스가 어디 있든, 이름만 알면 쉽게 불러와서 쓸 수 있습니다.
단점
코드의 설계와 기획의 설계가 잘 되어있어야 어드레서블로 업데이트 하는 횟수가 증가 할 것이다.
기존의 코드를 그대로 사용하되 리소스의 형태만 추가 혹은 변경되는 경우에만 해당 기능을 사용할 수 있습니다.
코드가 변경되는 형태일 경우에는 앱빌드 자체의 버전을 올리고 스토어에서 업데이트가 필요하기 때문에 Addressable의 한계점 있습니다.
'Unity' 카테고리의 다른 글
Unity 2D 유용한 기능들 (0) | 2024.10.22 |
---|---|
Unity WebGL을 사용하여 GitHub에 업로드 해보자! (0) | 2024.10.22 |
Unity 2D 유용한 구문 (0) | 2024.10.21 |
Addressable 활용하여 App 내부에서 업데이트 해보자 (2) | 2024.10.21 |
어드레서블 관련 오류[addressables error] (1) | 2024.10.19 |
댓글