본문 바로가기

프로그램-잉/Unity

Getting started with Addressable Assets

Installing the Addressable Assets package

Unity 2018.2 이상이 필요합니다.

이 패키지를 설치하려면 패키지 관리자 설명서 의 지침을 따르십시오 .

Marking Assets as addressable

에셋을 어드레서블 에셋으로 표시하는 방법에는 두 가지가 있습니다. Addressable Assets 패키지가 설치되면 Inspector  에서 Asset을 어드레서블로 표시하거나 Addressables  으로 드래그 할 수 있습니다.

항목 의 Inspector 창에서 Address 체크박스를 클릭 하고 에셋을 식별 할 이름을 입력합니다.

 

어드레서블 윈도우창을 열려면 Window > Asset Management > Addressable Assets. 클릭하십시오 .

프로젝트 창의 에셋 폴더에서 Addressable 창의 Asset 탭 에있는 그룹으로 항목을 드래그합니다 

 

자산의 기본 주소는 프로젝트의 자산 경로입니다. 예 : Assets / images / myImage.png . Addressables window을 사용하여 주소를 고유 한 이름으로 변경할 수 있습니다 .

주소를 변경하려면 자산의 현재 주소를 더블 클릭하고 새 주소를 입력하십시오.

어드레서블 에셋 사용을 처음 시작할 때 시스템은 버전 제어 체크인에 추가해야하는 Assets/AddressableAssetsData 에 프로젝트에 대한 일부 에디트 시간 및 런타임 데이터 자산을 저장합니다 .

Loading or instantiating by address

런타임에 에셋을로드하거나 인스턴스화 할 수 있습니다. 에셋을 로드하면 모든 종속성이 메모리에로드됩니다 (관련된 경우 에셋 번들 데이터 포함). 이를 통해 필요할 때 에셋을 사용할 수 있습니다. 인스턴스화는 에셋을로드 한 다음 즉시 씬에 추가합니다.

 

문자열 주소를 사용하여 스크립트의 자산에 액세스하려면 :

Addressables.LoadAsset<GameObject>("AssetAddress");

또는

Addressables.Instantiate<GameObject>("AssetAddress");

 

LoadAsset및 Instantiate비동기 작업입니다. 애셋이로드 된 후 작업하려면 반드시 콜백을 제공해야합니다.

    GameObject myGameObject;


        ...
        Addressables.LoadAsset<GameObject>("AssetAddress").Completed += onLoadDone;
    }

    private void private void onLoadDone(UnityEngine.ResourceManagement.IAsyncOperation<Sprite> obj)
    {
        // In a production environment, you should add exception handling to catch scenarios such as a null result;
        myGameObject = obj.Result;
    }

 

Using the AssetReference Class

AssetReference의 클래스는 문자열 (또는 기타) 주소를 알 필요없이 에셋접근이 가능한 메커니즘을 제공합니다.

* AssetReference * 클래스를 사용하여 주소 지정 가능 자산에 액세스하려면 :

 

  1. 자산을 선택하십시오.
  2. Inspector에서 Add Component 버튼을 클릭 한 컴포넌트 타입의 스크립트를 선택합니다.
  3. 스크립트에에 공용 AssetReference 개체를 추가합니다 . 예를 들면 :

    public AssetReference explosion;

  4. Inspector에서 프로젝트 창에서 항목으로 자산을 드래그하거나 항목을 클릭하여 이전에 정의 된 주소 지정 가능한 자산 (아래 참조)에서 선택하여 오브젝트가 연결된 자산을 설정합니다.

간단한 필터링을 위해서는 이름 시작부분을 입력하세요

Loading an Addressable Asset by object reference

AssetReference를 로드하려면 정의 된 메소드 중 하나를 호출하십시오. 예를 들면 :

AssetRefMember.LoadAsset<GameObject>();

또는

AssetRefMember.Instantiate<GameObject>(pos, rot);

LoadAsset및 Instantiate비동기 작업입니다. 애셋이로드 된 후 작업하려면 반드시 콜백을 제공해야합니다.

 

Downloading in Advance

 

Addressables.PreloadDependencies()메서드를 호출 하면 전달하는 주소 또는 레이블에 대한 종속성이로드됩니다. 일반적으로 이것이 에셋 번들입니다.

호출에 의해  IAsyncOperation객체가 반환 됩니다 이는 PercentComplete 속성을 포함하고있는데요 이는 다운로드의 진행 상황을 모니터링하는 데 사용할 수 있습니다. 완료율을 사용하여 진행률 표시 줄을 표시하고 콘텐츠가로드 될 때까지 앱이 대기하도록 할 수 있습니다.

앱에 대한 자산을 미리 다운로드하는 것이 유리할 수 있지만 그렇게 선택하지 않을 수도 있습니다. 예를 들면 :

  1. 앱에 많은 양의 온라인 콘텐츠가 있고 일반적으로 사용자가 그 일부와 만 상호 작용할 것으로 기대하는 경우.

  2. 작동하려면 온라인으로 연결해야하는 앱이 있습니다. 예를 들어, 멀티 플레이어 게임. 앱의 모든 콘텐츠가 작은 번들에있는 경우 필요에 따라 콘텐츠를 기다렸다가 다운로드하도록 선택할 수 있습니다.

사전로드 기능을 부분적으로 사용하도록 선택할 수도 있습니다. 완료율을 사용하여 콘텐츠가로드 될 때까지 기다리는 대신 다운로드를 시작한 다음 계속할 수 있습니다. 나중에 자산을 실제로 로드 할 때 로드 / 대기 화면을 만들어야합니다. 사전로드가 완료되면 로드가 빠르며 그렇지 않으면 앱이 콘텐츠가로드 될 때까지 기다려야합니다.

'프로그램-잉 > Unity' 카테고리의 다른 글

Addressable Memory Management  (0) 2021.02.26
Addressable Asset Basic  (0) 2021.02.21
Addressable Asset Overview  (0) 2021.02.20
Unity x LEGO Microgame 공모전  (0) 2020.10.28
TimeScale - Coroutine  (0) 2020.10.16