Addressable Assiets 가져오기 시도

7877 단어 Unity

개시하다


Unity 2018.2부터 Addressable Asset을 사용할 수 있습니다.
지금까지의 리소스와 아스셋 번들레가 대안이 된 것 같아서 한번 해보고 싶어요.

사용된 버전


Unity 2018.2.3f1
Addressables System 0.2.2 - preview

가져오기 방법


Addressable Assets는 Package Manager에서 관리합니다.
그러나 현재 Package 일람표에 표시되지 않기 때문에 다음과 같은 변경 설정 파일이 필요합니다.
Packages/manifest.json
{
  "dependencies": {
    "com.unity.addressables": "0.2.2-preview",
    // 元々記載されているパッケージ
  }
}
현재 최신 버전은 0.2.2-Preview입니다.
Unity에서 Packages에 Addressables System이 추가되면 OK입니다.
Package Manager에도 표시됩니다.

Addressables System이 표시되면 Package Manager에서 업그레이드할 수 있습니다.
이제 Addresable Asseets를 활용할 준비가 되었습니다.

기본적인 이용 방법


자산 준비


우선 등록 자산을 준비한다.
이번에는 당신의 물건을 준비했습니다.

Addressable Settings 만들기


그런 다음 Addressable Settings를 만듭니다.
메뉴 모음에서 Window > Asset Management > Addresable Assets을 선택하여 Addressables 창을 표시합니다.
창의 Create Addressables Settings 단추가 생성됩니다.

버튼을 생성합니다Assets/AddressableAssetsData/AddressableAssetSettings.asset.
또한 이전 Addressables 창의 표시 내용이 변경됩니다.

등록 자산


Addressables 창의 Default Local Group에 자산을 등록합니다.
폴더에 대한 D&D도 가능하지만 폴더 내 자산이 등록되지 않아 회색 출력 상태여서 제대로 등록할 수 없습니다.
따라서 등록 서류 자체는

이걸로 준비했어.

자산에 넣다


장면에 Image를 배치하여 스크립트로 읽어들인 자산을 표시합니다.
다음 스크립트를 작성하여 Image의 GameObject에 붙여넣습니다.
Image 참조도 설정되어 있습니다.
LoadSprite.cs
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.UI;

public class LoadSprite : MonoBehaviour
{
    [SerializeField] private Image _image = null;

    private void Start()
    {
        Addressables.LoadAsset<Sprite>("Assets/Textures/icon_medical/icon_medical_man01.png").Completed +=
            op => _image.sprite = op.Result;
    }
}
Addressable.LoadAsset에 등록된 자산을 읽을 수 있습니다.
지정한 문자열은 Asset Address 항목입니다.
읽기가 반드시 바로 끝나는 것은 아니기 때문에 읽기가 끝났을 때의 처리를 호출하고 있습니다.
이렇게 하면 참조가 설정된 Image에 문자열에 지정된 Sprite가 표시되어야 합니다.
표시되지 않으면 Asset Address 등을 다시 확인하십시오.
색인에서 읽을 자산을 지정할 수도 있습니다.
LoadSprite2.cs
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.UI;

public class LoadSprite : MonoBehaviour
{
    [AssetReferenceTypeRestriction(typeof(Texture2D))]
    public AssetReference AssetReference;

    [SerializeField] private Image _image = null;

    private void Start()
    {
        Addressables.LoadAsset<Sprite>(AssetReference).Completed +=
            op => _image.sprite = op.Result;
    }
}
AssetReference 색인에서 Addressables 창에 등록된 자산을 선택할 수 있습니다.AssetReferenceTypeRestriction 특집을 사용하여 선택한 후보에 표시된 자산을 제어할 수 있다.
그러나 공용의 Asseet Reference에만 효과가 있습니다.
(priveteSerializeField로 특집을 사용하면 선택 후보에 표시된 자산을 제어할 수 없습니다.)
또한 스프릿을 지정하면 제대로 동작할 수 없으므로 Texture2D를 지정하여 후보 선택을 제어합니다.
여기서도 수행해야 한다면 참조가 설정된 Image에 Asseet Reference로 지정된 Sprite로 표시됩니다.

총결산

  • Addressable Asseets는 Package Manager에서 관리합니다.
  • Package Manager에 초기 상태로 표시되지 않으므로 편집Packages/manifest.json합니다.
  • 사용된 자산은 Addressables 창에 등록됩니다.
  • 자산은 Addressables.LoadAsset에서 읽고 읽은 처리는 Completed 호출에서 한다.
  • 읽을 때 파일 지정은 Asset Address 문자열 또는 Asset Reference를 통해 수행할 수 있습니다.
  • Addressable Asseets가 이용할 수 있는 상태라고 생각해서 이 기사는 일단 여기서 끝내도록 하겠습니다.
    다음 기사에 Asset Bundle의 제작 부분 등을 쓰고 싶습니다.

    참조 링크


    Addressable Asseets 시스템 전체 이해 - Qita

    좋은 웹페이지 즐겨찾기