Tutorial     Tip     Trouble Shooting     Research     Read

2015년 1월 1일 목요일

unity_asset_bundle

unity asset bundle

  • 어떻게 만드는가?
    • BuildAssetBundle, BuildAssetBundleExplicitAssetNames, BuildStreamedSceneAssetBundle를 이용
    • 유니티 에디터에 따로 메뉴가 없다. 위 함수 이용해서 직접 제작해야함
    • version 정보를 따로 관리
      • asset bundle 자체에는 LoadFromCacheOrDownload에 사용하는 버전 정보가 없는것 같다.
  • 어떻게 사용하는가?
    • 다운로드
      • WWW 혹은 LoadFromCacheOrDownload 이용
      • LoadFromCacheOrDownload의 version은 그냥 로컬에서 유지하는 정보인것 같다. 즉, url에 해당하는 asset들을 캐시할때마다 해당 version으로 마크해두고, script에서 요청할때, 캐싱하고있는 asset들중에 해당 version이 있으면 사용하고, 없으면 다운로드하는 식.
    • 로드
      • Load, LoadAll, LoadAsync 이용
  • 자료 읽으면서 메모
    • 모바일의 경우는 type tree가 빠지므로 unity 버전 올라갈때마다 다시 빌드해야한다. -> 뭘 다시 빌드한다는 거?
    • 텍스트 파일에 에셋들에 관한 정보를 담고 이것을 우선 로드하여 에셋 로드 한다? -> 구체적으로 모르것음.
    • http://www.scio.de/en/blog-a-news/scio-development-blog-en/entry/accessing-bundle-version-in-unity-ios-runtime-2
    • 에디터에서 애셋 번들 기반으로 작업할때, 애셋이 바뀔때 마다 리빌드하는 작업을 없애기 위해 #if UNITY_EDITOR 로 코드를 나누어 Resources.LoadAssetAtPath 사용
    • AssetBundle.LoadAsync
    • 하나의 텍스처를 여러 모델에서 사용하는경우 걍 번들을 각각(complete로?) 만들면 텍스처가 생성되고 각각 메모리에 올라가서 낭비. 이를 해결하려면 dependency를 수동으로? 설정해줘야함
    • dependency chain의 일부인 애셋번들을 리빌드 할 일이 있을 것 같은면, BuildAssetBundleOptions.DeterministicAssetBundle 옵션을 사용해야함. 이때 애셋 id는 애셋 번들 파일 이름등으로 해쉬 코드를 만드므로 파일 이름 변경하면 안됨. 또 너무 많은 오브젝트를 가지면 해쉬 충돌 나므로 안됨.
    • 쉐이더도 이렇게 따로 관리해야함
    • Audio는 특이하게 AssetBundle.Unload(true)를 호출해 주어야만 메모리에서 완전히 정리된다.
    • 커스텀 쉐이더는 애셋번들 로드시 다시 세팅해주어야한다?
    • 큰 scene을 읽어 들이는 경우에는 많은 로딩 시간이 소요될 수 있는데, 이런 경우에는 scene을 여러 개의 작은 scene 으로 분할 한 다음 , 첫번째 scene을 로딩한 다음 LoadLevelAdditive 나 LoadLevelAdditiveAsync 를 사용하여 다음 Scene 을 현재 로딩한 scene 에 추가하는 방법으로 로딩 시간을 줄 일 수 있다. __Async 의 함수들은 비동기로 로딩을 하는 기능을 제공한다.
    • 애셋번들내에서 이름이 같은 경우 오류가능성(ex. fbx와 prefab)
  • 체크사항
    • 메모리 문제 없는지
    • 로드시 랙 없는지. AssetBundle.LoadAsync() 사용하게끔 구조 바꾸는것 고려.
    • 애셋번들들을 어디까지 나눌 것인가.
    • 애셋번들들의 버전체크를 어떻게 할 것인가.
    • 애셋번들에 포함된 애셋과 연관된 스크립트가 수정된 경우 해당 애셋번들도 다시 만들어야하는가
  • 참고

할 것들


  • 로컬에서 번들 데이터 저장을 어떻게 할지 살펴보기

댓글 없음:

댓글 쓰기