공부

[현상해결] 마지카 클로스2만 넣으면 유니티가 튕겨요

Myong_ 2025. 4. 27. 20:40

 

 

오늘 하루종일 유니티 32번 튕긴 사람의 표정

 

 

 

미래의 나를 위해 남겨놓는 기록

해결하는데 도움주신 김일분님과 숑님 정말 감사합니다..

현상 내용 정리는 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. 주요 증상

  1. 에디터 로그에 수백 줄의 FormatException 출력
  2. 이후 Assertion failed on expression: 'exception == SCRIPTING_NULL' 메시지 반복
  3. MagicaCloth2 에디팅용 메쉬 갱신 기능(CreateOrUpdateEditMesh) 호출 시점에 충돌
  4. 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 캐시 삭제 및 패키지 업그레이드

  1. 프로젝트 폴더 내에서 Library/BurstCache 폴더 통째로 삭제
  2. Unity 에디터 재실행 (도메인 리로드 및 캐시 재구축)
  3. 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” 체크박스 해제
  • 적용 후 에디터 재실행