공부
[현상해결] 마지카 클로스2만 넣으면 유니티가 튕겨요
Myong_
2025. 4. 27. 20:40
미래의 나를 위해 남겨놓는 기록
해결하는데 도움주신 김일분님과 숑님 정말 감사합니다..
현상 내용 정리는 GPT의 도움을 받았읍니다..
- 근본 원인: Burst 컴파일러의 DeserialiseStringArraySafe 내부 int.Parse 실패 → FormatException
- 해결 방법: Burst AOT Settings 초기화, Burst 캐시 삭제 후 패키지 업그레이드, 혹은 MagicaCloth2에서 Burst 비활성화
1. 발생 환경
- Unity 버전: 2021.3.18f1 (LTS)
- LilToon SDK: Packages/Packages폴더 내 jp.lilxyzw.liltoon-1.8.5
- Nilotoon : URP 12 / 0.16.12
- MagicaCloth2: Assets/MagicaCloth2 최신 에디터 패키지
- 운영체제: Windows 11 64bit
- 와루도 SDK 프로젝트 + 닐로툰 + MagicaCloth2 동시 설치 후 도메인 리로드 시점에서 에디터가 강제 종료됨
2. 주요 증상
- 에디터 로그에 수백 줄의 FormatException 출력
- 이후 Assertion failed on expression: 'exception == SCRIPTING_NULL' 메시지 반복
- MagicaCloth2 에디팅용 메쉬 갱신 기능(CreateOrUpdateEditMesh) 호출 시점에 충돌
- Unity 에디터 창이 멈추거나 팝업 없이 강제 종료
FormatException: Input string was not in a correct format. System.Number.ParseInt32 (System.String s) … Unity.Burst.BurstCompilerOptionsInternal.DeserialiseStringArraySafe (System.String input) Burst.Compiler.IL.Jit.JitCompilerService.GetAssemblyPaths (System.String folders) … MagicaCloth2.RenderSetupData:ReadTransformInformation(Boolean, RenderSetupSerializeData) MagicaCloth2.<CreateOrUpdateEditMesh>d__23:MoveNext()
3. 근본 원인 분석
3.1. Burst 컴파일러 초기화 과정에서 파싱 오류
MagicaCloth2는 Cloth 에디팅을 위해 유니티 Jobs API와 Burst 컴파일러를 활용하는데, 에디터가 시작되거나 도메인 리로드가 일어날 때, Burst는 AOT(Ahead-of-Time) 컴파일에 사용할 어셈블리 경로 목록을 EditorPrefs 또는 ProjectSettings/BurstAOTSettings.asset 에서 문자열로 읽어들임.
- 올바른 포맷: 숫자만 쉼표로 나열된 정수 배열(예: "123,456,789").
- 실제 저장값: 잘못 구성된 문자열(경로 정보, 공백, 특수문자 등)
이 잘못된 문자열을 DeserialiseStringArraySafe 내부에서 int.Parse로 정수로 변환하려다 FormatException이 발생하고, Burst 초기화가 완료되지 못해 도메인 리로드 루틴이 중단됨. 이어서 Assertion failed on expression: 'exception == SCRIPTING_NULL' 에러가 쌓이면서 결국 에디터 충돌
3.2. 동일 현상 보고
- Unity Forum 및 GitHub 이슈에서 Burst AOT Settings 관련 파싱 오류 사례 다수
- MagicaCloth2 이슈 트래커에도 “Burst 초기화 실패로 경고 다발 → 에디터 크래시” 리포트 존재
4. 문제 해결 절차
4.1. Burst 캐시 삭제 및 패키지 업그레이드
- 프로젝트 폴더 내에서 Library/BurstCache 폴더 통째로 삭제
- Unity 에디터 재실행 (도메인 리로드 및 캐시 재구축)
- Latest 버전의 Burst 패키지 적용
- Packages/manifest.json 열기
- "com.unity.burst": "1.7.x" → "com.unity.burst": "1.8.3" 이상으로 수정
- 패키지 매니저에서 Update 클릭 후 다시 컴파일
4.2. MagicaCloth2 에디터 설정 우회
MagicaCloth2의 Cloth 에디터 창(Settings)에서 Use Jobs 또는 Enable Burst 옵션을 꺼서 Burst 호출 자체를 비활성화
- MagicaCloth2 메뉴 → Preferences / Settings 탭
- “Use Jobs / Burst” 체크박스 해제
- 적용 후 에디터 재실행