Unity

리소스 관리 - Addressable (3) - Sprite

Dean83 2024. 2. 2. 10:32

이전 페이지 : https://dean83.tistory.com/205

 

리소스 관리 - Addressable (2)

이전 페이지 : https://dean83.tistory.com/204 이번에는 inspector 에서 직접연결을 통해 addressable 리소스를 이용하는 법을 정리한다. 방식은 기존에 inspector 에서 변수에 직접 드래그 하는것과 동일하나, 내

dean83.tistory.com

 

sprite를 로딩해 오는 방법을 정리한다. 총 3가지로 내용 정리 한다. 

  • 1편에서 다루었던 Addressables 를 이용하여 코드베이스로 로드하는 방법
  • 2편에서 다루었던 AssetReference 를 이용하여 Inspector 에서 연결하는 방법
    • 형이 맞지 않으면 오류 발생하나, 다양한 형식의 리소스를 배정 가능
  • AssetReferenceSprite 변수를 이용하는 방법

 

1. Addressables 코드베이스

[SerializeField]
private string addressName;

[SerializeField]
private Image image;

private AsyncOperationHandle<Sprite> testHandle;

....


testHandle = Addressables.LoadAsync<Sprite>(addressName);
testHandle.Completed += LoadCompleted;
....

void LoadCompleted(AsyncOperationHandle<Sprite> ob)
{
	if(ob.Status == AsyncOperationStatus.Succeeded)
    {
    	image.Sprite = ob.Result;
    }
}

...

 

2. AssetReference 이용 (Inspector)

[SerializeField]
private AssetReference m_ref;

[SerializeField]
private Image m_image;

private AsyncOperationHandle<Sprite> m_handle;

....

if(m_ref.RuntimeKeyIsValid() == false)
	return;
    
m_handle = Addressables.LoadAssetAsync<Sprite>(m_ref);
m_handle.Completed += .... 

.....

 

3. AssetReferenceSprite 이용 (Inspector)

[SerializeField]
private AssetReferenceSprite m_ref;

[SerializeField]
private Image m_image;

private AsyncOperationHandle<Sprite> m_handle;

....

if(m_ref.RuntimeKeyIsValid() == false)
	return;
    
m_handle = Addressables.LoadAssetAsync<Sprite>(m_ref);
m_handle.Completed += .... 

.....