Loading...
2017. 6. 3. 17:35

assetbundle building, change file

내용은 이러함.1. 에셋번들 빌드2. 빌드결과 파일들 복사.3. 프로젝트 아무것도 안 건드리고 다시 빌드4. 두번째 빌드결과 파일들과 첫번째 빌드 파일들 비교이상하게 몇몇 파일들이 자꾸 결과물이 다르다.실제로 파일용량도 다르다.대략 내용을 보면 내용은 같은데 파일의 내용 부분에서 저장 데이터 위치가 조금씩 바뀌면서 용량도 틀려지고 하는듯 하다.근데 왜 저장 위치가 달라지는 거지? 현재 사용 버전 : 5.5.1p3결론 : 빌드할 때마다 특정 scene들의 파일 용량이 다르며, 실제이 조금씩 달라진다. 그럼으로 인해 파일의 CRC 또한 달라진다. 첫번째 해결 시도혹시 editor 관련 코드들이 random 을 만들어 내거나 하지 않을까?editor 코드들을 제거. 끝없이 제거..딱히 정확한 연관성을 찾지 못..

메모리 프로파일러

개인 필요에 의해 번역한 글입니다.꼭 원문을 참고하시길 강추드립니다. 유니티 5.3a4는 상당히 저레벨의 새로운 메모리 프로파일러 API가 있다.이 프로파일러는 어느 오브젝트가 얼마나 많은 c++ 메모리 할당을 받았는지에대해 찾아낼 수 있다.IL2CPP 플랫폼에서 c#타입의 설명 뿐 아니라 전체 c# 힙의 덤프까지 제공한다. 이 API는 대부분의 사람들이 사용하기에는 너무 저레벨이다.이 말은 이 API를 사용하기 위해 멋진 UI 윈도우가 더해지면정말로 많은 사람에게 활용하기 유용할 것이며,어느 오브젝트가 로드되었는지, 어느 오브젝트가 많은 메모리를 차지하는지,그리고 가장 중요한 왜 그 오브젝트가 메모리에 있는지를 찾는데 도움을 줄 것이다.이 레퍼지토리는 더 멋진 UI 윈도우로 작업이 진행중에 있다. 일반..

2017. 4. 14. 04:53

Asset Bundles vs. Resources : A Memory Showdown

필요에 의해 번역한 내용입니다. 원문을 보시기를 추천합니다. 리소스 : Resources에셋번들 : Asset Bundles 최근에 우리는 기존 방식의 리소스 시스템 사용에 대한 것과 왜 이전 에셋 로딩이 이후 에셋 로딩보다 메모리 오버헤드가 더 높은지에 대해 많은 문의를 받았다. 본문이 너무 길어 읽지 않은 사람들을 위해 : 만약 리소스 시스템에서 할 수 없는걸 에셋번들이 할 수 있다면 결국에는 에셋번들의 오버헤드가 훨씬 작을 것이다.만약 에셋번들에 익숙하지 않고 에셋번들에 대해 더 알고자 한다면 Unity Manual과Asset Bundles & Resources Guide를 읽어보길 추천한다. 바로 살펴보면, 우리는 기본적으로는 같은 내용인 버그 리포트를 몇개 받았는데,내용은 에셋번들을 통해 에셋을..

Asset Bundle Compression

유니티의 에셋번들 압축유니티는 세가지 에셋번들 압축 옵션을 제공한다 : LZMA, LZ4, 그리고 비압축(UnCompressed)LZMA Format기본, 에셋번들을 만들 때 압축포맷으로 만들어 진다.표준 압축 포맷은 직렬화된 데이터 파일들의 단일 LZMA 스트림이며,사용하기 전에 전체를 압축해제 해야 한다.이 방식은 다운로드 용량이 가장 작지만, 상대적으로 느린 압축 해제로 인해,로드 시간이 더 많이 걸린다. LZ4 Format이 방식은 LZMA와는 다르게 큰 용량의 압축파일이 만들지만,대신 사용하기 전에 전체를 압축해제 할 필요가 없다.이 방식은 "chunk-based"알고리즘으로, 압축된 번들에서오브젝트를 로드할 때, 해당 오브젝트의 해당 청크만 압축을 해제한다.이는 on-the-fly(빈번하게 읽..

NullReferenceException: WWW class has already been disposed.

항상 날 괴롭히던 버그가 하나 있었다.NullReferenceException: WWW class has already been disposed. c#코드에서 www를 쓸 때 나는 에러인데 왜 이게 나는지 항상 의문이었다.이 에러가 나는 원인은 말 그대로 www값이 이미 제거되었는데 이 값으로 무언가를 하려 하기 때문이다.나의 경우는 이런상황에서 나왔다.www test = new(path) // path가 잘못되서 test가 err남if (test.error != null){ // err 난건 폐기하려고 함test.Dispose(); return;} 위 코드에서 err난 시점에 이미 dispose되었는데 코드에서 다시 dispose를 하려 해서위와같은 에러가 났다.

2017. 3. 9. 22:16

OnRenderImage() possibly didn't write anything to the destination texture!

이전에는 안그랬는데 유니티 버전을 올렸더니 아래와 같은 경고가 자꾸 남.이런 경고가 나는곳은 특정 텍스처에 현재 화면을 찍어주는 역활을 하는 곳이었는데대충 아래와 같은 코드로 되어 있었다. void OnRenderImage(RenderTexture source, RenderTexture destination){ ..... 다른곳에서 받은 RenderTexture rt에 현재 스샷을 찍는다. Graphics.Blit(source, rt, mat, 0); 그리고 이런저런 처리를 하고 이 rt를 다른곳에서 쓴다.} 이전에는 문제가 없었는데 언제부턴가 위와같은 경고가 나왔다.내용은, "너 임마, 걍 destination에 아무것도 안썻잖아" 이다.그냥 이렇게 냅둬도 디바이스에서도 별로 문제가 없는것 같고그냥 실..

sending message header failed

이전에 asyncload 관련 버그 때문에 멘탈이 쪼개지고 나서 열시미 고쳤는데(고친 방법은 이 링크)이번에 5.55.1p3 버전에서 고쳐졌다고 해서 잽싸게 설치해 봤는데 잘 된다. 흐흐흐.그동안 맘고생한게 다 헛수고였던게야..그런데 갑자기 이런 경고(sending message header failed)가 무한으로 뜬다.play상태든 아니든 계~~속 뜬다.나의 경우 이 때는 프로파일러를 띄워서 active를 edtior로 바꿔주면 더 이상 뜨지 않았다.기존은 android target으로 되어 있엇다.무튼 기존 async 버그가 고쳐져서 기분좋음.ㅎㅎㅎ Reference Link- Unity 5.5 Assetbundle.LoadAssetAsync 문제-

Unity 5.5 AssetBundle.LoadAssetAsync

5.5로 업그레이드 후 에셋번들 로드시 높은 확률로 굳어버린다.뻗는것도 아니고, 에러도 아니고 말 그대로 굳어버린다.포럼에도 이런 현상을 겪었다는 글이 올라오고 있는데 일주일 정도 삽질을 거듭한 결과어느정도? 수정이 되었다.100프로 확신할 수 없는 건 이렇게 고치는게 맞는지 보증이 없기 때문이지만현재 pc 에셋번들 버전과 모바일 버전에서 굳는현상이 나오지 않았다.현재 수정한 내용을 간추려 말하자면 기존에는 로드 요청이 들어오면 유니티가 알아서 처리하게냅두었는데 지금은 번들 로드인 www와 내부 파일 로드인 LoadAssetAsync를 내부 락을 걸어www가 로드중일 때는 LoadAssetAsync을 피했고, 내부 파일 로드 내에서도LoadAssetAsync를 순차적으로 처리 해 주었다.빨리 빌드를 전달..