유니티에서 Addressable 활용하기 - Azure Blob 에서 에셋 받기

Published: Jun 30, 2022 by BeatChoi

Addressables

이번 포스팅에서는 Addressable Asset System을 활용하여 에셋을 로드해 봅니다.
Addressable Asset System은 에셋을 조금 더 효율적으로 관리하기 위한 시스템으로
기존의 Asset Bundle을 기반으로 작동합니다.

프로젝트의 에셋을 관리함으로서 전체 프로젝트의 용량을 줄이거나 효율적으로 수정할 수 있습니다.
이번 포스팅에서 Azure Blob을 통해서 에셋을 로드해 봅니다.

Unity3D

프로젝트를 생성하고 Package Manager에서 Addressables 패키지를 설치합니다.


<01. Addressables 다운로드 >

이번엔 로드할 에셋을 만들어봅니다.
단순한 Cube 오브젝트를 생성하여 Prefab으로 만들어 줍니다.
계층구조창의 Cube 오브젝트는 제거하고 프로젝트 창의 Cube 프리펩을 선탁합니다.
다음과 같이 Inspector창에서 Addressable 항목에 체크해줍니다.


<02. Addressables 객체 설정 >

그리고 다음과 같이 AddressableGroup창을 띄워줍니다.


<03. Addressables Group 창 >

Addressable Groups창에서 Default Local Group항목의 드롭다운버튼을 눌러 확인해보면
위에서 체크한 Cube오브젝트가 등록되어 있습니다.
추후에는 에셋들을 그룹화하여 관리할 수 있습니다.


<04. Addressables Group >

Azure Blob

네트워크 스토리지에 빌드된 에셋을 업로드하기 위해 Azure Blob을 활용해 봅니다.
Azure에 가입하고 로그인 후 blob을 검색해서 스토리지 계정항목을 클릭합니다.


<05. Azure Blob >

그리고 상단 +만들기 버튼을 클릭하여 스토리지 생성 창으로 넘어갑니다.
저장소 계정 생성 창에서 다음과 같이 작성한 후 아래 검토 + 만들기 버튼을 누르고 만들기 버튼을 한번 더 만들어줍니다.



<06.07. Azure Blob >

기다리면 배포가 완료됩니다. 아래 `리소스로 이동` 버튼을 눌러줍니다.


<08. Azure Blob 저장소 계정 배포 >

좌측 탭에서 `컨테이너`항목을 선택합니다.


<09. Azure Blob 저장소 계정 선택 >

좌측 상단 `+컨테이너` 항목을 클릭합니다. 우측에서 컨테이너 이름을 소문자로 정하고 아래 공용 엑세스 수준을 `Blob`으로 변경합니다.


<10. Azure Blob 컨테이너 생성 >

생성된 컨테이너를 우클릭하고 `컨테이너 속성`을 선택합니다. 그리고 나오는 창의 `URL`항목을 복사합니다. 해당 URL이 배포된 에셋을 다운로드 받는 경로입니다.


<11. URL 복사 >

## Unity 3D 유니티 3D로 돌아와서 `Addressables Group`창을 확인합니다. 상단 `Profile: Default`항목을 클릭하고 `Manage Profiles`항목을 클릭합니다. `Addressables Profiles`창에서 `Remote` 항목을 `Custom`으로 변경하고 두번째 `Remote.LoadPath` 항목에 방금 복사한 URL을 붙여넣습니다.


<12. Addressables Profiles >

프로젝트 창에서 `AddressableAssetSettings`을 선택합니다. 우측 인스펙터 창에서 `Content Update` 항목에서 `Build Remote Catalog`항목을 체크합니다. 아래에 `Load Path` 항목이 방금 붙여넣은 경로와 같은지 확인합니다.


<13. Addressable Asset Settings >

프로젝트 창에서 `Default Local Group`을 선택합니다. 우측 인스펙터 창에서 `Content Packing and Loading`항목에서 `Build and Load Paths` 항목을 `Remote`로 변경합니다. 마찬가지로 하단 경로가 방금 붙여넣은 경로와 같은지 확인합니다.


<14. Default Local Group >

이제 에셋을 빌드합니다. `Addressables Groups`창에서 `Play Mode Script`항목을 클릭하고 하단 3번째 `Use Existing Build`항목을 클릭합니다. 그리고 동일한 창에서 `Build`항목을 클릭하고 `New Build` -> `Default Build Script`항목을 클릭하여 빌드를 진행합니다.


<15. Asset Build >

다음과 같은 경로에 에셋이 빌드가 됩니다.


<16. Build 완료 >

## Azure Blob 아까 `Azure Blob`에서 생성한 컨테이너로 가서 위 빌드한 파일들을 업로드해줍니다. 상단 `업로드`버튼을 클릭하고 해당 파일을 업로드합니다.


<17. 번들 업로드 >

## Unity 3D #### Script `AddressableLoad.cs` 스크립트를 생성하고 다음과 같이 작성합니다. ```ruby using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AddressableAssets; public class AddressableLoad : MonoBehaviour { public void CreateObj() { Addressables.InstantiateAsync("Assets/Cube.prefab", new Vector3(0, 0, 0), Quaternion.identity); } } ``` * 4 : AddressableAssets 네임스페이스를 추가합니다. * 10: InstantiateAsync, 에셋 레퍼런스를 활용한 게임오브젝트 생성 함수 ##테스트 테스트를 위해 씬에 빈 게임 오브젝트를 생성하고 이름을 `AddressableLoader`로 변경합니다. 해당 오브젝트에 `AddressableLoad.cs`스크립트를 인스턴스화 시킵니다.


<18. 스크립트 인스턴스화 >

씬에 버튼 UI를 하나 생성합니다. 해당 버튼 `OnClick()` 이벤트 함수에 위 `AddressableLoader`오브젝트를 연결하고 작성한 스크립트의 `CreateObj` 함수를 선택합니다.


<19. 버튼 생성 >

프로젝트창에 생성해둔 `Cube` 프리펩을 삭제하고 플레이 버튼을 눌러 테스트해봅니다. 아래와 같이 버튼을 눌렀을 때 큐브가 생성되면 성공입니다.


<20. 테스트 성공 >

Latest Posts

콘텐츠 개발 기법 - URP 환경에서 Bloom 및 Volume 포함한 화면 캡처
콘텐츠 개발 기법 - URP 환경에서 Bloom 및 Volume 포함한 화면 캡처

화면 캡처 :: Screen Capture

일반적으로 URP환경에서 Bloom 등의 Volume 이펙트들이 함께 캡처되지 않는 현상이 일어납니다.
두가지 원인이 있는데 첫번째는 저장할 Texture 및 Texture2D의 크기가 작아 모든 텍스쳐를 저장할 수 없는 경우와
두번째는 Linear color space의 픽셀을 텍스쳐에 저장 할 수 없는 경우가 있습니다.
이번 포스팅에서는 URP 환경에서 해당 이펙트들을 함께 캡쳐하는 방법을 알아봅니다.

콘텐츠 개발 기법 - UI 안나오게 화면 캡처(Screen Capture without UI)
콘텐츠 개발 기법 - UI 안나오게 화면 캡처(Screen Capture without UI)

화면 캡처 :: Screen Capture

UI 없이 화면을 캡쳐하는 방법을 알아봅니다.
해당 방법을 통해 사진 앱에서 사진을 찍거나 게임 내에서 UI를 제거한 스크린샷을 구현할 수 있습니다.

유니티3D 에디터에서

스크립트 작성

LightshipAR SDK 활용하기 - LightshipAR VPS의 활용
LightshipAR SDK 활용하기 - LightshipAR VPS의 활용

LightshipAR SDK

이번 강좌에서는 Visual Positioning System (VPS) 기능을 활용하여 콘텐츠를 개발해 봅니다.
VPS는 GPS정보와 타겟 매핑 정보를 정합하여 해당 타겟을 인식하는 기능입니다.
따라서 객체나 환경의 변화 및 이동이 잦지 않은 타겟이 스캔 대상이 됩니다.
주로 동상, 건물 입구, 가로등 등 위치의 변경이 없는 타겟들이 좋은 타겟입니다.

해당 타겟들을 인식시키고 주변에 가상의 오브젝트들을 배치하고 해당 위치를 저장하는 방법을 알아봅니다.

공간 매핑

Niantic Wayfarer

공간을 인식시키기 위해서 먼저 공간을 매핑해야 합니다.
이 과정은 IOS 어플리케이션으로 진행을 할 수 있는데 아래 링크에서

  1. Testflight
  2. Wayfarer

어플리케이션을 다운로드 및 설치합니다.

링크 : https://testflight.apple.com/join/VXu1F2jf