내일배움캠프 47일차 6/21 TIL + 어드레서블 패키지
어드레서블
기존에는 리소스를 폴더에서 경로 찾아서 매번 폴더를 다 뒤져보며 찾아와서 성능이 너무 떨어졌습니다. AssetBundle은 리소스를 압축해서 사용하는 기존 방법이었지만 너무 불편했습니다. 그래서 Addressable이 나왔고, 이것도 압축하지만 함수를 호출해서 사용하고 key로 경로를 받아 쓰기 좋습니다. 기존의 개발사들은 독자적인 에셋번들 관리 툴이 있어서 잘 안쓰지만, 그런게 없다면 충분히 사용하기 좋습니다.
어드레서블 사용법
1. Addressable 패키지 설치
- 패키지 매니저 열기: Unity 에디터 상단 메뉴에서
Window
->Package Manager
를 클릭합니다. - Addressable 패키지 검색:
Addressable
을 검색하여 패키지를 설치합니다.
2. Addressable 설정
- Addressable 그룹 생성: 프로젝트 창에서
Assets
폴더에서 우클릭 ->Create
->Addressables
->Group
을 선택하여 그룹을 생성합니다. - Addressable 속성 설정: 원하는 에셋을 선택한 후, 인스펙터 창에서
Addressable
체크박스를 선택합니다.
3. Addressable 에셋 로드
Addressable 에셋을 로드하는 기본 방법은 다음과 같습니다:
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
public class AddressableLoader : MonoBehaviour
{
public string key;
void Start()
{
// Addressable 에셋 로드
Addressables.LoadAssetAsync<GameObject>(key).Completed += OnLoadDone;
}
private void OnLoadDone(AsyncOperationHandle<GameObject> obj)
{
if (obj.Status == AsyncOperationStatus.Succeeded)
{
// 에셋 로드 성공
GameObject loadedPrefab = obj.Result;
Instantiate(loadedPrefab);
}
else
{
// 에셋 로드 실패 처리
Debug.LogError("Failed to load addressable asset");
}
}
}
4. Addressable 에셋 해제
사용이 끝난 Addressable 에셋은 해제하여 메모리를 관리해야 합니다:
void OnDestroy()
{
Addressables.ReleaseInstance(loadedPrefab);
}
5. Addressable 빌드
- Addressable 빌드 설정: 상단 메뉴에서
Window
->Asset Management
->Addressables
->Groups
를 클릭하여 Addressable 그룹 창을 엽니다. - 빌드 실행:
Build
->New Build
->Default Build Script
를 선택하여 빌드를 실행합니다.
Addressable의 장점
- 효율적인 리소스 관리: 필요할 때만 리소스를 로드하고 해제하여 메모리 사용을 최적화합니다.
- 쉽고 빠른 접근: 키를 통해 리소스를 쉽게 접근하고 관리할 수 있습니다.
- 유연한 배포: 리소스를 패키지화하여 다양한 플랫폼에 유연하게 배포할 수 있습니다.
어드레서블 패키지를 통해 기존의 번거로운 리소스 관리 방식을 개선하고, 성능과 효율성을 높일 수 있습니다. 앞으로 프로젝트에서 이를 적극적으로 활용하여 보다 효과적인 리소스 관리를 할 수 있을 것으로 기대됩니다.