Resources에서 Addressable로 생성 로직 변경

이재형·2025년 6월 18일

MinerFergus 개발 정리

목록 보기
3/10
post-thumbnail

개발 목적

기존 방식인 Resources는 런타임 리소스 관리에 한계가 있으며, 불필요한 메모리 사용이 발생함으로 Addressable로 변경

구조 진행 순서

1. GameManager, UIManager에 Async-await 적용
2. AddressableManager에 기능 모듈화
3. UIManager에서 비동기 동적 생성 후 딕셔너리에 저장 및 초기화


1. GameManager, UIManager 비동기(async) 처리

비동기 로딩을 하기 위해 각 Manager에서 async-await 구조 적용

UIManager에서 UI를 생성하는 UISetInit()을 비동기 실행


2. 어드레서블 그룹 세팅, Addressable 기능 모듈화

어드레서블 그룹 세팅에서 리소스 및 라벨 추가

Canvas를 먼저 생성하여 위치해야하므로 Canvas만 별도의 라벨을 가짐

어드레서블의 기능을 미리 모듈화

- 하나의 오브젝트를 생성하는 InstantiateAsync
- 여러 리소스를 반환하는 LoadAssetsAsync
- 하나의 리소스를 반환하는 LoadAssetAsync

여러 오브젝트를 생성하는 기능인 InstantateAsync

주의 사항 : Addressables.InstantiateAsync는 단일의 인스턴스 생성만 되기 때문에 라벨에 여러 인스턴스를 만들때는 Addressables.LoadResourceLocationAsync로 리소스들을 받은 다음 진행해야 문제 없이 인스턴스들이 생성이 됨

Addressable.LoadAssetsAsync로 하지 않은 이유 : Addressable.LoadAssetsAsync는 리소스 자체를 반환하는 것인데Addressables.InstnatiateAsync는 리소스의 위치를 매개변수로 받기 때문

리소스 해제하는 메서드 모듈화
인스턴스를 해제하는 ReleaseInstance
원본 에셋을 해제하는 Release


3. Resources기반에서 Addressable로 생성 로직 변경

Addressable의 반환 타입에 맞게 List 형식으로 변경

Canvas는 별도의 라벨로 Canvas의 위치로 인스턴스 생성 후
생성한 UI을 딕셔너리에 저장

UI의 UIInit(인터페이스)을 실행


실제 인게임 이미지

Addressable를 적용한 결과

동적 생성 자체는 똑같기 때문에 Resources와 결과는 같음
[이후에 로딩 UI를 추가하여 적용 예정]


마무리하면서...

Resources에서 Addressable로 변경했지만 UI의 경우에만 적용하다보니 리소스 해제 부분을 아직 테스트를 하지 못함
더 나아가 다른 라벨을 추가하고 리소스 할당 및 해제를 적용해야 함

profile
한국사람

0개의 댓글