어드레서블 패키지 설치
Windows > Package Manager 선택.
Addressables 검색 후 설치.
어드레서블 설정 생성
Windows > Asset Management > Addressables > Groups 선택.
Create Addressables Settings 클릭.
그룹 생성
Assets\ExampleAssets 폴더처럼 Materials, Models, Prefabs, Shaders, Textures 로 분류.
_Addressable Groups_창에서 Create > Group > Packed Assets 선택 후 이름 변경.
어셋을 어드레서블로 만들기
어셋들을 Assets\ExampleAssets 폴더에서 _Addressable Groups_창의 적절한 그룹으로 이동.
이름을 간략화하기 위해 어셋들을 선택한 후 우클릭 Simplify Addressable Names 선택.
레이블 추가
Tools > Labels 선택.
이전 단계에서 생성했던 그룹에 따라 레이블 생성.
각각의 어드레서블에 적절한 레이블 추가.
기존 오브젝트 제거
씬에서 Example Assets 게임오브젝트 아래의 Workshop Set, Props 제거.
아래 두 클래스를 추가.
AddressablesLoader.cs
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.AddressableAssets;
public static class AddressablesLoader
{
public static async Task InitAssets<T>(string label, List<T> createdObjs, Transform parent)
where T : Object
{
var locations = await Addressables.LoadResourceLocationsAsync(label).Task;
foreach (var location in locations)
{
createdObjs.Add(await Addressables.InstantiateAsync(location, parent).Task as T);
}
}
}
C#
복사
AddressablesController.cs
이 모노비헤이비어를 아무 게임오브젝트에 붙여야됨.
Example Assets가 이미 있으니 이걸 사용.
using System.Collections.Generic;
using UnityEngine;
public class AddressablesController : MonoBehaviour
{
[SerializeField]
private string _label;
private Transform _parent;
private List<GameObject> _createdObjs { get; } = new List<GameObject>();
private void Start()
{
_parent = GameObject.Find("Example Assets").transform;
Instantiate();
}
private async void Instantiate()
{
await AddressablesLoader.InitAssets(_label, _createdObjs, _parent);
}
}
C#
복사
불러올 레이블 명시
인스펙터의 Label 필드에 Prefabs 기입.
확인
Play 버튼 클릭 후 확인.
플레이 모드 스크립트
플레이 모드에서 어드레서블을 사용하는데는 3가지 모드가 있음.
프로덕션 환경에서 동작하는지 확인하기 위해서는 Play Mode Script를 Use Existing Build (requires built groups) 로 변경.
어드레서블 빌드
빌드를 하기 위해 Build > New Build > Default Build Script 선택.
Assets\AddressableAssetsData\Windows 폴더 내에서 빌드된 파일을 찾을 수 있음.
확인
Play 버튼을 클릭 후 확인.
빌드를 하지않았다면 위와 같은 에러 메세지 발생.
빌드된 파일들은 서버에 저장하고 가져올 수 있음.
여기서는 AWS S3로 할것임.
이 가이드에서는 클라우드 서비스 설정은 다루지않을 것임.
프로필 생성
Profile:Default > Manage Profiles 선택.
_Addressable Profiles_창에서 Create > Profile 선택.
생성된 프로필을 원하는 이름으로 변경.
생성된 프로필에서, RemoteLoadPath 값을 http://localhost에서 버킷 URL로 변경.
생성된 프로필 우클릭 후 Set Active 선택.
원격 카탈로그 활성화
Tools > Inspect system Settings 선택.
인스펙터에서 Build Remote Catalog 체크.
Build Path를 RemoteBuildPath로 설정.
Load Path 역시 RemoteLoadPath로 설정.
원격 그룹 설정
Prefabs 그룹 우클릭 후 Inspect Group Settings 선택.
인스펙터에서 Build Path를 RemoteBuildPath로 설정.
Load Path 역시 RemoteLoadPath로 설정.
빌드
로컬 빌드 했듯이 Build > New Build > Default Build Script 선택.
ServerData\StandaloneWindows 폴더 내에서 빌드된 파일들을 찾을 수 있음.
파일들은 .json, .hash, .bundle 세 가지.
업로드
Unity가 원격 그룹을 서버에서 가져오려고 시도하기 때문에, 이 시점에서 플레이 모드에 진입시 에러가 발생함.
업로드를 합시다.
Next 버튼을 눌러 Set permissons 섹션으로 가서 Manage public permissions를 Grant public read access to object(s) 로 변경.
Upload 버튼 클릭.
변경
어셋에 아무거나 변화를 줌.
여기서는 페인트 통의 머테리얼을 바꿧음.
이전 빌드 업데이트
어셋 업데이트를 위해 Build > Update a Previous Build 선택.
Assets\AddressableAssetsData\Windows\ 폴더의 addressables_content_state.bin 파일 선택.
변경된 파일 업로드
변경된 파일들 (.json, .hash, .bundle)을 버킷의 StandaloneWindows 폴더로 업로드.
grant public read permissions 부여하는 걸 잊지말 것.
이제 서버에서 (원격이 설정된) 어셋들을 저장하거나 불러올수 있음.
또한 어셋을 수정할 때마다 프로젝트를 새로 빌드할 필요가 없음. 