무조건 발생하는 부분은 아니라 정말 애매한 상황인데
케릭터의 장비 변경시 케릭터 룩도 변화하도록 위의 기능들을 사용하고 있습니다.
그런데 이 함수를 빠르게 호출을 반복하다보면 내부에 있는 유니티 함수 Texture2D.GetPixels 호출부에서 크래시가 발생합니다.
혹시 해당 현상을 겪어보신분 계신가요?
GetRemappedClone과 GetRepackedSkin을 호출하다보면 유니티에서 크레시가 발생합니다.
- Изменено
보고 해 주셔서 감사합니다. 문제가 발생하여 죄송합니다. 몇 달 전에 우리는 당신이 묘사 한 것과 관련된 문제를 해결했습니다. 사용중인 spine-unity 런타임 버전 (unitypackage 이름)을 사용하고 있습니까? 최상위Spine
디렉토리에서version.txt
파일을 찾을 수도 있습니다.
Thanks for reporting and sorry for the trouble. Some months ago we have fixed an issue which is related to what you have described. Which version of the spine-unity runtime (name of the unitypackage) are you using? You can also find a file version.txt
in the top Spine
directory.
Package version: spine-unity-3_7-2019-08-05.unitypackage
작업한 spine의 버전이 낮아서 최신 버전을 실행할수 없습니다.
spine-unity 3.7을 사용하는 경우이 버그 수정은 확실히 포함되지 않습니다.
이것은 3.8 브랜치의 문제를 해결 한 커밋이었습니다.
https://github.com/EsotericSoftware/spine-runtimes/commit/844d08b2a49bea0e484c2fb8f36193d21e83fd79
따라서 인수 premultiplyAlpha = true
인 경우 문제가있는 메소드 인 ToAtlasRegionPMAClone()
을 호출하므로 GetRemappedClone
에 대한 호출은 위의 문제에 확실히 도달 할 수 있습니다.
위 커밋의 변경 사항을 3.7 코드에 통합하거나 대안으로GetRemappedClone
메소드 호출에서 premultiplyAlpha = false
를 전달할 때 문제가 지속되면 시도해 볼 수 있습니다.
If you are using spine-unity 3.7 then this bugfix is definitely not included.
This was the commit that fixed the issue on the 3.8 branch:
https://github.com/EsotericSoftware/spine-runtimes/commit/844d08b2a49bea0e484c2fb8f36193d21e83fd79
So your call to GetRemappedClone
could definitely run into the above problem as it calls the problematic method ToAtlasRegionPMAClone()
when the argument premultiplyAlpha = true
.
You could either integrate the changes of the above commit into your 3.7 code, or as an alternative, your could have a try if the problem persists when you pass premultiplyAlpha = false
at the GetRemappedClone
method call.
해당 수정부분을 적용해봤지만 동일한 문제가 발생하였습니다.
문의 해 주셔서 감사합니다. 문제가 지속된다는 점에 유감입니다.
Thanks for getting back to us, sorry to hear that the problem persists.
또 다른 이유는 매우 빠르게 연속적으로 메서드를 호출 할 때 (비디오) 메모리가 부족하기 때문일 수 있습니다. 프로파일 러 창을 열고 사용 된 메모리가 충돌 할 때까지 증가하는지 확인해 주시겠습니까?
Another reason could be that you are running out of (video) memory when calling the methods in very quick succession. Could you perhaps try opening the Profiler window and check if used memory is growing until it crashes?
한참 늦게 답변달아서 죄송합니다. 우선 메모리 부분은 문제가 없었습니다. 연속적으로 빠르게 호출하다보면 생기는 부분이라 현재 원인은 솔직히 잘모르겠습니다. 해당부분이 문제가 일어나는 부분이 UI상에서 유닛 정보를 스왑할때 주로 발생하는 부분이라 드로우콜이 증가하더라도 해당 함수를 호출안하는 방안으로 진행하여 우선 문제를 우회하였습니다.
다시 연락해 주셔서 감사합니다. 문제 또는 신뢰할 수있는 재현 시나리오에 대한 추가 정보를 발견 한 경우 언제든지 다시 문의하십시오.
Thanks for the getting back to us. Feel free to contact us again in case you discover additional information about the problem or a reliable reproduction scenario.