Unity
어드레서블 어셋 시스템에서 어브레서블 그룹에 등록된 어셋은 코드에서 3가지 방법으로 인스턴싱 할 수 있다.
myroad
2023. 5. 12. 15:30
어드레서블 그룹에 등록된 어셋을 인스턴싱하는 3가지 방법
1.어셋의 이름으로 인스턴싱
- 어드레서블 그룹에 등록된 어셋은 코드에서 그냥 해당 어셋의 이름을 그대로 사용해도 어드레서블이 자동적으로 찾아서 해당 어셋을 인스턴싱해 준다. 즉 어셋의 이름이 Cube라면 그냥 Cube 문자열을 사용해서 인스턴싱할 수 있다. 다만 주의할 점이 있다. 어셋을 어드레서블 그룹에 드래그 앤 드롭을 했다면 그대로 경로명이 이름으로 설정되므로 긴 경로명을 그대로 사용할 게 아니라면 이름을 설정해 주어야 한다.
IEnumerator InstantiateAsset(string asset)
{
var async = Addressables.LoadAssetAsync<GameObject>(asset);
yield return async;
GameObject go = Instantiate(async.Result);
SetLoadAsset(async, new GameObject[] { go });
}
2.어셋에 설정된 라벨 이름으로 인스턴싱
IEnumerator InstantiateLabel(string label)
{
List<GameObject> golist = new List<GameObject>();
AsyncOperationHandle<IList<GameObject>> async = Addressables.LoadAssetsAsync<GameObject>(label, null);
yield return async;
for (int i = 0; i < async.Result.Count; i++)
{
golist.Add(Instantiate(async.Result[i]));
}
//SetLoadAsset(null, golist.ToArray());
}
3.오브젝트에 설정된 AssetReference 참조을 통한 인스턴싱
IEnumerator InstantiateAsset(AssetReference asset)
{
AsyncOperationHandle<GameObject> async = asset.LoadAssetAsync<GameObject>();
yield return async;
GameObject go = Instantiate(async.Result);
SetLoadAsset(async, new GameObject[] { go });
}