리소스를 관리하는 방법으로 어드레서블 에셋에 대해 알게 되었다.
어드레서블 에셋은 유니티의 에셋 관리 시스템의 일부로, 개발자가 에셋을 쉽게 관리하고 로드할 수 있게 도와주는 패키지다.
각 에셋은 주소나 그룹을 통해 식별되며, 에셋의 포장, 로딩 및 언로딩을 더욱 효율적으로 할 수 있다.
패키지 설치
유니티 에디터에서 Window -> Package Manager를 통해 Addressable Asset 패키지를 설치한다.
Window -> Asset Management -> Addressables -> Groups 에서 새로운 어드레서블 에셋 그룹을 생성한다.
에셋을 선택하고 인스펙터 패널에서 Addressable 체크박스를 체크하여 에셋을 어드레서블로 마킹한다.
Build -> New Build -> Default Build Script를 통해 어드레서블 에셋을 빌드한다.
런타임에서 Addressables.LoadSsetAsync(타입)을 사용하여 비동기적으로 에셋을 로드한다.
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
public class AddressablesLoader : MonoBehaviour
{
public AssetReference assetReference; // 에디터에서 할당할 수 있는 어드레서블 에셋 레퍼런스
void Start()
{
// 에셋 주소를 사용하여 비동기적으로 에셋 로드
Addressables.LoadAssetAsync<GameObject>("assetAddress").Completed += OnAssetLoaded;
}
void OnAssetLoaded(AsyncOperationHandle<GameObject> handle)
{
if (handle.Status == AsyncOperationStatus.Succeeded)
{
// 로드된 에셋을 인스턴스화
GameObject obj = Instantiate(handle.Result);
// 필요한 작업 수행...
}
else
{
Debug.LogError("Asset load failed.");
}
}
public void ReleaseAsset()
{
// 에셋 레퍼런스를 사용하여 로드된 에셋 해제
if (assetReference.IsValid())
{
Addressables.Release(assetReference);
}
}
}
위 코드는 에셋을 로드하고, 사용 후 해제하는 기본적인 방법을 보여준다.
이렇게 로드한 에셋은 Instantiate를 통해 씬에 추가할 수 있고, 더 이상 필요하지 않을 때 Addressables.Release를 호출하여 메모리에서 해제할 수 있다.
UI 디자인