Loading...

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에 아무것도 안썻잖아" 이다.그냥 이렇게 냅둬도 디바이스에서도 별로 문제가 없는것 같고그냥 실..

2017. 3. 4. 12:03

animation 최적화

케릭터에 붙어있는 애니메이션이 많을수록 케릭터 로딩이 느려진다.한 스테이지에 케릭터가 10개가 나온다고 가정하고, 각 케릭터가 가져야 할애니메이션 갯수가 영웅일 경우 20개, 적군일 경우 10라고 할 경우,애니메이션 용량이 3메가라 가정해서 영웅 5명의 애니메이션은 5*20*3 = 300메가....헐...적군 5명은 5*10*3 = 150메가....헐....이건 좀 말이안되는듯..내가제대로 계산한거 맞음??? 후덜덜..... 그래서 애니메이션 최적화를 시도해보자!이미 이 주제에 대해서는 많은 분들이 좋은 팁을 알려주셨으니 참고하면 되고내가 할 이야기는 scale에 관한 내용이다. 최적화를 할 타겟 파일을 보자.5메가가 넘는 엄청난 녀석이다.엄청나게 많은 애니메이션을 하겠지 뭐....유니티에서 애니메이션 ..

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를 순차적으로 처리 해 주었다.빨리 빌드를 전달..

유니티에서의 메모리 관리.

유니티에서 사용하는 메모리는 3가지 종류의 영역이 있다. code영역유니티 엔진과 라이브러리, 게임코드가 컴파일 되어서 디바이스의 메모리 코드 영역에 로딩되게 된다.크게 최적화 할 필요가 없음. 코드 파일 용량이라고 해 봤자 어차피 얼마 안된다. Managed Heap 영역Mono(.Net Framework의 오픈소스버전)가 관리하는 영역.instantiated object, variable, new 키워드로 할당한 메모리, 들이 거주하게 되는 영역.Managed인 이유는 Mono Framework이 이 영역의 메모리를 할당하거나 해제하면서 관리하기 때문. 유니티 레퍼 참고 - 자동 메모리 관리오브젝트나 string 또는 배열이 생성될 때, 이를 저장하기 위해 요구되는 메모리는Heap이라고 불리는 중앙 ..

shader tip with Intel

이전에 포스팅한 테그라에서의 유니티 버그는 대략 마무리 되었고이번에는 듀얼 os를 지원하는 태블릿들 테스트중..그런데 특정 셰이더 쓰는 애들은 mask가 안된다.머징 이생퀴들은... 에러도 딱히 안났는디...크흠크흠..구글신이 말하길.. Intel은 Half Float 지원안한단다... 아래 내용을 조금 해석해 보자면...half float 이나 float 자료형은 몇가지 응용프로그램 영역에서 인기있는 유형이다.half float 타입을 저장유형으로 간주하기 때문에 종종 데이터를 half type으로 저장하더라도,계산은 이러한 유형의 값에서 수행되지 않는다.일반적으로 어느 계산을 하기전에 32비트 float 타입으로 값을 변환시킨다. half float 타입의 지원은 단지 32비트 float으로, 또는 ..

unity bug with tegra k1

미루고 미루었던 비주류 제품들 빌드 테스트를 하기 시작함.1. tegra2. 듀얼 os 테블릿 pc 제품들. (뭔가 칩셋이 제각각임) 기본적으로 이전에 언렬에서 겪었던 말리칩의 float 정밀도 문제이후웬만하면 모든 칩셋에서 테스트를 해볼려고 노력중이다. 그래서 이번에 마침 테스트패드로 가지고 있던 샤오미 미패드1과 2로 테스트.미패드1은 tegra k1, 미패드2는 Intel HD Graphics이다. tegra k1으로 테스트를 하는데 전투를 시작하면 백프로 뻗음.뭘까? 이전 빌드때도 뻗어서 그때는 유니티 내장셰이더를 쓰지 않고자체 셰이더를 썻더니되서 혹시 이번에도 그런 문젠가 해서셰이더를 문제없이 출력되는 셰이더를 넣고 해봄. 뻗음..... 왜 뻗는지 몰라서 패치받는 절차도 귀찮고 해서 로그인에 뻗..