에셋번들&어드레서블

김치헌·2024년 3월 22일
0

TIL

목록 보기
36/38

에셋번들&어드레서블

1. 에셋관리방법

  1. 인스펙터 연결 > Instantiate (오브젝트가 많아지면 인스팩터에 연결한 변수 증가)
  2. Resourses.Load > Instantiate - 문자열 기반> 외부에서 세팅한 값으로 불러오기 쉽다.
    문제 : 경로가 바뀐다면?
    빌드할때 포함되는 데이터
    빌드에 포함된 Scene - Scene에 올라간 Object/Object에 참조된 데이터
    Resources > 데이터가 많으면 용량이 커짐
    StreamingAssets > 원본 파일 그대로 / 빌드 후 외부에서 접근해서 변경가능(영상,텍스쳐 등)
    Plugins

빌드시포함
용량이 증가 > 빌드시간 증가, 다운로드 용량증가, 접근성Down, 수정이 필요하면 다시 빌드

2. 에셋번들

실행파일과 에셋 파일을 분리가능
실행파일 > 스토어에 올라간 파일
에셋파일 > 게임에 접속하여 패치로 다운로드하는 파일

3. 만드는 법

Editor폴더 안에 AssetBundleBuilder 스크립트 작성
BuildPipeLine.BuildAssetBundles(경로, 압축옵션, 타겟플랫폼);

4. 사용하는 법

에셋을 사용하기 전에 에셋번들을 불러와야 함
AssetBundle.LoadFromFile
IEnumerator LoadAssetBundle{
UinityWebRequest www=UnityWebRequestAssetBundle.GetAssetBundle(url:"")
if(www.resuld == UnityWebreuquest.Result.Successs)}
불러온 파일로 prefab생성

단점
번거로움
번들 내부적으로 경로를 관리가 필요
메모리 관리 이슈
종속성 이슈

단점을 극복하기 위해 Addressable이 나옴
테스트할때 Resources를 사용 배포시에 번들 생성하는 로직을 만들기도 함

Window PackageManager Unityresister > Addressables 설치
Window AssetManagement > Addressable> Group
드레그로 추가
Key값만 알고있으면 경로가 바뀌어도 상관이 없음

BuildRemotoCatalog 채크
Build&LoadPath Remote
RemoteOption Custom 빌드Path/LoadPath 세팅

어드레서블 빌드세팅
어드레서블그룹 > 우측상단 빌드 > 디폴트빌드

고려할 사항
어드레서블 다운에 앞서 데이터 사용 동의를 하자>매번 다운로드x 서버 로컬 데이터가 다른 경우만 에셋 업데이트
런타임에서 사용을 위해 로드를 해야한다.
그룹/라벨에 따라 다양한 방법으로 로드 - 그룹별로 빌드>다운로드
라벨 실시간으로 사용할 때 모든 리소스를 로드하고 사용하지 않ㄴ느다
상황에 따라 필요한 리소스만 준비하여 사용
Stage나 던전등에 필요한 내용들을 라벨로 묶고 미리 로드할 수 있음

UI가 많지 않다면 모든 UI로드
필요할 때 로드하고 UIManager에서 캐싱해서 사용
주기적으로 리소스 해제 / 씬 전환시 유용

어드레서블 받기전에 필요한 데이터는 앱에 포함시키자
다운로드안내/동의텍스트(나라별)/UI등

비동기로 처리해야한다.

profile
초보개발자

0개의 댓글