| 작업 목표 📋
그동안 리소스 폴더를 통해서 리소스들을 관리했었는데, 최근 진행하는 한 프로젝트 중 리소스가 점점 늘어나는 것을 확인하고, 이전에 해커톤에 참여하여 잠깐 사용했던 어드레서블이 생각나서 관련 자료를 찾아보면서 ProjectA 프로젝트에 본격적으로 리소스 폴더 사용 로직에서 어드레서블로 전환하는 것이 목표입니다.
| TO DO LIST 💡
- 프로젝트 내 어드레서블 패키지 임포트
- 리소스 폴더 내 리소스 어드레서블 전환
- 어드레서블 그룹 및 라벨 분류
- 기존 리소스 매니저 재작성
- 리소스 매니저 사용 로직 수정
- 유니티 CCD (Clou Content Delivery) 설정
- 어드레서블 리모트 설정
- 빌드 및 테스트
| 작업 과정 🖥️
1. 프로젝트 내 어드레서블 패키지 임포트
패키지 매니저를 통해서 어드레서블 패키지를 프로젝트 내에 추가시켰습니다.
2. 리소스 폴더 내 리소스 어드레서블 전환
기존 리소스들을 모두 어드레서블로 전환하여 어드레서블 그룹으로 분류할 준비를 합니다.
3. 어드레서블 그룹 및 라벨 분류
리소스들을 어드레서블로 전환 후 적절히 그룹과 라벨을 추가하여 분류를 진행했습니다.
4. 기존 리소스 매니저 재작성
기존 리소스 매니저는 Resources 폴더를 통한 리소스 관리 로직이 구현되어 있어서 해당 매니저를 어드레서블을 활용하는 로직으로 재작성하였습니다.
처음에는 코루틴을 적용한 방식을 사용하였지만, 코루틴의 고질적인 문제인 값 반환 문제를 고려하여 찾아본 UniTask를 프로젝트에 추가하여 코루틴을 대신하였습니다.
UniTask를 적용하니 기존 코루틴으로 구현되었던 로직을 훨씬 깔끔하게 구현할 수 있어서 앞으로도 많이 활용할 것 같습니다.
5. 리소스 매니저 사용 로직 수정
리소스 매니저를 재작성하면서 기존 리소스 매니저를 사용하고 있는 로직들을 모두 수정해주어야 했습니다.
다행히 인터페이스를 비슷하게 최대한 구현하여서 수정 작업은 금방 마무리될 수 있었습니다.
6. 유니티 CCD (Cloud Content Delivery) 프로젝트에 추가
이제 어드레서블을 빌드하여 생긴 파일들을 원격 환경에서 로드할 수 있도록 작업을 진행하였습니다.
이전에는 AWS S3를 사용하여 원격 로드를 구현하였는데 이번에 어드레서블 자료를 찾아보며 새로 알게 된 서비스를 이용해 보았습니다. 유니티의 CCD(Cloud Contetn Delivery)인데 간단히 패키지 매니저의 서비스 탭에서 프로젝트에 추가할 수 있습니다.
7. 어드레서블 리모트 설정
Unity CCD의 가장 큰 장점은 AWS S3를 사용할 때와 다르게 간단히 설정을 할 수 있었습니다.
저는 개발 단계에서 사용할 원격 프로필인 Develop Remove Profile을 새로 생성하였고, 새로 생성 시 우측에 Remote 항목이 기본적으로 Editor Hosted라고 되어있는데 메뉴를 펼쳐보면 아래 이미지와 같이 CCD 항목이 있는 것을 확인할 수 있습니다.
CCD 항목을 선택하게 되면 다시 Automatic과 Specity the... 항목 두 개가 나타나는데 Automatic으로 진행 시 CCD에 생성되어 있는 환경(처음엔 Create Environment를 통해 환경을 만들어야 합니다)만 설정하면 끝나는 간단한 방법이 있으며
Specity the... 이 항목은 직접 환경과 버킷 그리고 배지를 선택하여 설정할 수 있습니다.
저는 production 환경과 develop 환경을 만들고 develop 환경 내 Android 버킷과 lastest 배지를 추가하였으며 Specity the.. 항목을 통해 Remote 설정을 마무리하였습니다.
| 작업 결과 ✅
최종적으로 기존 기능들이 모두 정상적으로 동작하는 것을 확인하였으며, 빌드 환경에서도 정상적으로 동작을 하는 것을 확인하였습니다.
| 다음에 작업할 내용 🕟︎
현재는 어드레서블을 통해 기존 리소스 작업을 대신할 수 있게끔만 작업해 둔 상태라고 생각이 들어서
어드레서블을 좀 더 활용할 수 있도록 자료 좀 찾아보면서 한번 더 작업도 하고, 어드레서블과 CCD, UniTask에 관련해서 별도 포스팅도 생각 중입니다.
이번 기회에 유니티 서비스에 괜찮은 서비스들이 많이 있어서 가능하다면, 제공되는 서비스들을 활용하는 방향도 생각 중이며, 다음 작업은 아마 뒤끝 서버 추가, 콘텐츠 구현 등등이 되지 않을까 예상해 봅니다.