Addressable은 Unity 에디터 및 런타임 에셋 관리 시스템으로, 게임을 출시할 때를 대비하여 에셋을 유동적으로 바꿀 수 있도록, 에셋들에 주소(address)를 대입하여(약한 참조) 에셋을 관리할 때 불필요한 로드를 방지한다.
장점
런타임 메모리를 개선할 수 있다.
참조된 에셋이 메모리 내부 및 외부에 로드되는 시점을 제어할 수 있다.
사용예시
addressable을 활용하여 이미지를 로드해 띄우는 법을 알아보자.
우선, Package Manager에서 Addressables를 다운로드한다.
그리고 불러오고자 하는 이미지의 Addressable에 체크한다.
(식별이 편하도록 이름을 바꾸어주어도 기능상 상 문제되지 않는다)
소스코드
그리고 코드를 작성해 준다. 받아오는 과정을 비동기로 진행해 주기 위하여 handle을 사용하며, Image를 불러오는 게 목적이기 때문에 RequireComponent로 Image 컴포넌트가 붙어 있어야만 스크립트가 붙도록 해준다.
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
[RequireComponent(typeof(Image))]
public class LoadImageWithAddress : MonoBehaviour
{
//에디터에서 정의함
public string address;
private Image image;
private AsyncOperationHandle<Sprite> handle;
private void Start()
{
image = GetComponent<Image>();
handle = Addressables.LoadAssetAsync<Sprite>(address);
handle.Completed += HandleCompleted;
}
private void HandleCompleted(AsyncOperationHandle<Sprite> operation)
{
if (operation.Status == AsyncOperationStatus.Succeeded)
{
image.sprite = operation.Result as Sprite;
image.SetNativeSize();
}
else
{
Debug.LogError($"AssetReference {address} failed to load.");
}
}
private void OnDestroy()
{
Addressables.Release(handle);
}
}
그 후, Image 컴포넌트가 붙은 오브젝트에 스크립트를 넣어주고, 불러오고자 하는 주소를 써준다.
그러면 정상적으로 적용된다!
'Unity' 카테고리의 다른 글
Unity Json으로 저장, 로드하는 법 (0) | 2023.01.04 |
---|---|
유니티 C# 버튼 가려짐 해결 (0) | 2022.11.21 |
댓글