본문 바로가기

Unity/어드레서블 에셋 시스템9

어드레서블 에셋 시스템 - 개념: 어드레서블 API 요약 & 정리 요약 모든 개념을 요약해서 API의 활용에 대해 정리해보자. (어드레서블 버전 1.10.0) 에셋을 로드하는 방법은 크게 4가지 이다. ① 어드레서블 명으로 로드하기 ② 레이블로 로드하기 ③ AssetReference 클래스로 로드하기 ④ IResourceLoaction으로 로드하기 IResourceLocation은 카탈로그로부터 얻어온 값으로, 에셋번들의 경로이다. 우리에게 주어져 있는 정보는 아니다. 위 API를 통해 얻어온다. (위 API는 경로만 추출할 뿐 에셋을 로드하지 않는다) 방법이 많은 것 같지만 위 4가지는 로드 함수의 인자일 뿐이다. 로드하는 방법은 단순하다. 로드함수에 4가지 중 하나를 인자로 넣고 호출하면 된다. GameObject를 생성하는 것으로 예시를 살펴보자. ① 어드레서블 .. 2020. 6. 29.
어드레서블 에셋 시스템 - 개념: Remote 서버 연동 Remote 서버 연동 CDN을 구축하기 위해 아마존 웹 서비스(AWS) S3를 사용해보자. https://aws.amazon.com/ko/getting-started/hands-on/backup-files-to-amazon-s3/ DNS이름을 지정하고 (예를들면 'study.mycdn.test', '[nickname].cdn' 등) 퍼블릭 권한 개별 부여는 번거로울 것 같으니까 그냥 차단 해제해놓자. 버킷이 만들어졌으면 버킷에다가 업로드할 에셋을 구성해보자. CDN에 업로드할 에셋 그룹을 새로 생성하자. 프로필 매니저를 열어서 RemoteLoadPath를 수정하자. 임시로 파일을 하나 업로드해서 객체 URL을 알아낸 뒤, DNS명까지만 복사해서 붙여넣자. Sphere와 Cube를 Remote 에셋그룹에.. 2020. 6. 29.
어드레서블 에셋 시스템 - 개념: Label로 로드하기 Label로 로드하기 Cube와 Sphere 중 하나를 랜덤 생성하는 로직을 Label을 사용해 구현해보자. Mange Labels를 눌러 Label을 추가한다. Cube와 Sphere에 'MyLabel'을 달아주자. 사용할 필드는 위 두가지이다. AssetLabelReference 필드는 라벨을 쉽게 고를 수 있도록 하는 자료형이다. IList은 '라벨'에 해당하는 에셋들의 경로들이다. 위 API를 통해 라벨을 인자로해서 에셋들의 경로인 IList을 얻는다. 그리고 이 경로를 통해 게임오브젝트를 생성할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39.. 2020. 6. 26.
어드레서블 에셋 시스템 - 디버깅: 에셋 빌드 에러 DirectoryNotFoundException DirectoryNotFoundException 에셋 빌드를 시작하면 어드레서블은 위 코드를 실행시킨다. 생성된 번들파일은 프로젝트 디렉토리의 Temp폴더에 대기한다. 이 번들 파일을 targetPath에 복사한다. targetPath는 에셋의 어드레스명으로 정해진다. 다른 에셋과 다르게 위 특정 에셋은 targetPath가 달라질 수 있다. (경로에는 파일이름도 포함된다 ) ex. 'Temp/test.txt' → Temp폴더에 test.txt라는 파일을 생성. 결국 targetPath의 불안정한 처리로 인해 파일 복사를 실패하고 빌드 경로를 찾을 수 없다고 하는 것이다. 어드레스의 슬래쉬 '/'를 제거하고 다른 에셋과 동일하게 해주면 에셋 빌드가 된다. 2020. 6. 26.
어드레서블 에셋 시스템 - 개념: 씬 로드 & 언로드, Component AssetReference 씬 로드 & 언로드 씬의 로드와 언로드를 구현해보자. 어드레서블 Key로 로드하기 Addressable Name이 'BouncyBall'인 씬 에셋이 있다. 'BouncyBall'은 어드레서블 네임임과 동시에 'key'에 해당한다. (Label도 key가 될 수 있다) using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; using UnityEngine.ResourceManagement.ResourceProviders; using UnityEngine.SceneManagement; public class AddressSceneLoader: MonoBehaviour.. 2020. 6. 24.