Unity 자습서/Addressable

유니티 Addressable #2 - 스프라이트

개양반 2020. 9. 6.
728x90

가. 준비물 가져오기

1. Sprite 2장 가져오기

이번에 사용할 이미지를 두장을 유니티로 가져옵니다. 이미지를 Sprite로 만들고 Inspector창에서 Addressable을 활성화시킨 다음 옆의 빈칸에 원하는 이름을 작성합니다. 해당 이름은 Addressable의 주소로 사용됩니다.


나. 스크립트 작성

1. AddressableSpriteLoader.cs 생성 후 작성

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;


public class AddressableSpriteLoader : MonoBehaviour
{
    private SpriteRenderer spriteRenderer;

    // AssetReference를 사용할 것인지 아니면 String으로 로드할 것인지 여부
    public bool isUseAddress;

    // 스프라이트 테스트 변수
    public AssetReferenceSprite newSprite;
    public string newSpriteAddress;
    void Start()
    {
        spriteRenderer = GetComponent<SpriteRenderer>();

        spriteRenderer.sprite = null;

        // isUseAddress가 true이면 string 값을 키값으로 사용해서 에셋을 로드합니다.
        if (isUseAddress == true)
        {
            Addressables.LoadAssetAsync<Sprite>(newSpriteAddress).Completed += SpriteLoaded;
        }

        // isUseAddress가 false이면 AssetReferenceSprite에 참조된 에셋을 로드합니다.
        else
        {
            newSprite.LoadAssetAsync().Completed += SpriteLoaded;
        }
    }


    private void SpriteLoaded(AsyncOperationHandle<Sprite> obj)
    {
         switch(obj.Status)
        {
            case AsyncOperationStatus.Succeeded:
                spriteRenderer.sprite = obj.Result;
                break;

            case AsyncOperationStatus.Failed:
                Debug.Log("스프라이트 로드 실패");
                break;

            default:
                break;
        }
    }
}

#주요 코드

  • AssetReferenceSprite : Addressable 에 등록된 Asset 중에 Sprite만 참조할 수 있는 변수 타입입니다.
  • Addressables.LoadAssetAsync<Sprite>(newSpriteAddress) : String으로 키 값을 검색할때 사용
  • newSprite.LoadAssetAsync() : AssetReferenceSprite에 참조된 애셋으로 불러올때 사용
  • AsyncOperationHandle : 로드  상태, 결과 등을 관리한다.

다. 컴포넌트 연결

1. Loader 오브젝트

저번 강좌에서 만들었던 Loader 오브젝트에 AssetReferenceUtility 컴포넌트를 삭제하고 위에서 만든 AddressableSpriteLoader를 연결합니다. 아래와 같이 설정합니다.


라. 테스트하기

IsUseAddress 활성화/비활성화해서 테스트를 두번 진행합니다. 활성 여부에 따라 다른 이미지가 출력되는지 확인합니다.

댓글

💲 추천 글