2025.04.08 - [공부 기록/유니티 Unity] - [Unity/TIL] Addressable 연구
[Unity/TIL] Addressable 연구
이번 프로젝트에서는 Addressable을 사용할 것이다. 빌드 시 Resources.Load를 사용하는 것보다 무조건 빌드 용량에 이점이 있기 때문이다. 그외에도 다음과 같은 장점들이 있다. 서버와 Addressable을 함
ramenkirby.tistory.com
Addressables.ResourceManager.CreateGenericGroupOperation(operations);
어드레서블에서 제공하는 위 함수를 사용하면 operations 리스트를 하나의 Group Operation으로 묶어준다. 이것도 로딩이 완료될 때 Completed를 제공한다.
이 기능을 활용해서 여러 에셋을 동시에 비동기 로드할 수 있게 만들어줬다. 아래 코드는 ResourceManager의 기능으로서 만든 함수이다. 중복 등록을 방지하며 키 목록을 내부 딕셔너리에 저장해둔다.
private readonly Dictionary<string, List<string>> keys = new();
private readonly Dictionary<string, AsyncOperationHandle> operations = new();
public AsyncOperationHandle CreateGenericGroupOperation(AsyncOperationHandle<IList<IResourceLocation>> groupLocation, Action onComplete = null)
{
var locations = groupLocation.Result;
var keys = new List<string>(locations.Count);
var operations = new List<AsyncOperationHandle>(locations.Count);
foreach (var location in locations)
{
string key = location.PrimaryKey;
keys.Add(key);
var operation = LoadAssetAsync<Object>(key);
operations.Add(operation);
}
string label = groupLocation.DebugName;
if (!this.keys.ContainsKey(label))
this.keys.Add(label, keys);
var groupOperation = Addressables.ResourceManager.CreateGenericGroupOperation(operations);
groupOperation.Completed += operation => onComplete?.Invoke();
if(!this.operations.ContainsKey(label))
this.operations.Add(label, groupOperation);
Addressables.Release(groupLocation);
return groupOperation;
}
이런 기능을 만들어두면 여러 리소스를 라벨 단위로 로드하고 관리할 수 있어진다. 씬을 로드할 때 해당 씬에서 필요한 리소스들을 로드해두고, 씬을 나갈 때 해제할 수 있도록 하면 될 것 같다.
+ 추가로 씬도 StateMachine 으로 만들어서 씬을 로드하기 전과 후에 할 일들을 처리해주려고 한다.
'프로젝트 일지 > Unity' 카테고리의 다른 글
[Unity/TIL] MonoBehaviour 상속받지 않는 곳에서 코루틴 사용하는 방법 (8) | 2025.04.11 |
---|---|
[Unity/TIL] 싱글톤 매니저 관리 (2) | 2025.04.10 |
[Unity/TIL] Addressable 연구 (3) | 2025.04.08 |
[Unity/TIL] 트러블슈팅 - 싱글턴 인스턴스에 Action 구독할 때 주의해야 함!!! (0) | 2025.04.02 |
[Unity/TIL] 3D 퍼즐 플랫폼 게임 - 팀 프로젝트 일지 (3) | World Space UI 클릭 이벤트 발생 안함 해결, 제네릭 데이터 로더 구현, 데이터 AES 암호화해서 json으로 입출력 (2) | 2025.03.17 |