🐧 들어가기 앞서

리소스를 관리하는 방법으로 어드레서블 에셋에 대해 알게 되었다.


🐧 오늘 배운 것

어드레서블 에셋은 유니티의 에셋 관리 시스템의 일부로, 개발자가 에셋을 쉽게 관리하고 로드할 수 있게 도와주는 패키지다.

각 에셋은 주소나 그룹을 통해 식별되며, 에셋의 포장, 로딩 및 언로딩을 더욱 효율적으로 할 수 있다.


🐧 기억할 것 & 진행

사용 방법

  1. 패키지 설치
    유니티 에디터에서 Window -> Package Manager를 통해 Addressable Asset 패키지를 설치한다.

  2. Window -> Asset Management -> Addressables -> Groups 에서 새로운 어드레서블 에셋 그룹을 생성한다.

  3. 에셋을 선택하고 인스펙터 패널에서 Addressable 체크박스를 체크하여 에셋을 어드레서블로 마킹한다.

  4. Build -> New Build -> Default Build Script를 통해 어드레서블 에셋을 빌드한다.

  5. 런타임에서 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 디자인

0개의 댓글