제목 그대로.
번들 다운로드 시스템을 변경한 후 테스트 도중 아이폰에서만 파일을 찾지 못하는 현상이 발생.
윈도우 유니티 에디터, 맥 유니티 에디터, 안드로이드 기기에서는 문제가 없었음
매니페스트 파일명을 대문자로 넣었더니 아이폰에서만 파일을 찾지 못해서 소문자로 수정했더니 문자 해결.
약 3/4일 걸림
2018년 11월 28일 수요일
2018년 9월 4일 화요일
GetAllScenePathsFromAssetBundle crash
- 백그라운드로 번들을 다운받고 캐싱하는 코드를 만들고 있는 중
- 번들 파일을 받고 UnityWebRequest.GetAssetBundle 을 사용하여 캐싱을 하면 에디터에서 100% 크래쉬가 발생(2017.2.1p1)
- Editor 로그를 확인하니까 마지막 콜스텍이 GetAllScenePathsFromAssetBundle
- 구글링 해 보니 나같은 현상이 발생한다는 애들이 있었음
issuetracker - We noticed that this bug was related to using WebRequest to cache bundles in background and not accessing the DownloadHandler.assetBundle property before the UnityWebRequest dispose.
- UnityWebRequest 를 쓸 때는 꼭 using 을 사용하자 유니티 메뉴얼
2018년 6월 22일 금요일
다운받은 AssetBundle 검증하기
- 아카마이에 올린 어셋 번들을 다운 받았을 때 cr and fl 문제가 발생해서 용량도 달라지고, 번들을 로딩하면 멈추거나 크래쉬가 발생함.
- 패치 서버로 부터 각 어셋번들 파일의 Hash와 CRC 정보를 제공받고 있으므로, 다운로드 후 .Net 코드를 이용하여 MD5해쉬와 CRC32 를 추출하여 패치서버의 AssetBundleManifest의 Hash, CRC와 비교했는데 같은 파일이라도 동일하지 않았음.
- 단순 용량 비교는 가능하지만 파일 변조를 검증할 수 없어서 검사하지 않음.
- 번들 파일만으로는 검증할 방법이 없어 Unity 의 AssetBundle.LoadFromFile 의 파라메터로 들어가는 Crc를 이용하기로 결정
- 패치 서버로 부터 받은 Crc 를 파라메터로 추가해서 LoadFromFile 함수를 호출하고, 바로 Unload(true) 를 호출 하도록 작업
- 변조된 번들 파일을 LoadFromFile 로 호출 해 보니(Crc 를 추가하여) 정확하게 에러로그와 함께 null을 뱉어 줌(Exception 이 아님).
- 번들파일 경로가 담긴 구조체를 List 에 넣어 Linq.Each 를 사용해서 LoadFromFile 을 호출 했을 때, 에러가 발생하면 Each 가 더 이상 동작하지 않아 for( 로 수정함
라벨:
AssetBundle,
Crc,
Unity
피드 구독하기:
글 (Atom)