내일배움캠프

내일배움캠프 Unity - TIL : 25.04.02

달시_Dalsi 2025. 4. 2. 22:59
728x90

오늘 학습한 내용

1) Instantiate 시 부모 객체를 설정하면 자식 순서가 플랫폼마다 다르게 적용되는 문제

  • WebGL에서는 자식 순서가 항상 0번이 되고, Windows 및 Unity 에디터에서는 마지막 순서가 됨.
  • SetSiblingIndex를 활용하여 일관된 자식 순서를 유지하도록 수정.

2) WebGL 빌드에서 예외 처리(Enable Exceptions) 설정이 필요한 문제

  • 특정 상황에서 런타임 오류 발생하지만 오류 메시지가 출력되지 않음
  • Project Settings > Player > Publishing Settings > Enable Exceptions → "Full" 또는 "Explicitly Thrown Exceptions Only"로 변경

문제 및 해결 과정

1) 문제 (Instantiate 시 자식 순서 문제)

Instantiate를 사용하여 동적으로 객체를 생성하고 특정 부모를 설정했을 때 플랫폼마다 자식 순서가 다르게 적용되는 문제가 발생했습니다.

  • WebGL(웹 빌드) → 새 오브젝트의 자식 순서가 항상 0번으로 설정됨
  • Windows 및 Unity 에디터 → 새 오브젝트의 자식 순서가 마지막이 됨

 

시도한 해결 방법

SetSiblingIndex 메서드를 사용하여 강제로 자식 순서를 맞추는 방식으로 해결했습니다.

GameObject newObject = Instantiate(prefab, parentTransform);
newObject.transform.SetSiblingIndex(parentTransform.childCount - 1); // 항상 마지막 순서로 설정

 

 

2) 문제 (WebGL 빌드 시 예외 처리 설정 문제)

 

  • WebGL로 빌드했을 때 특정 상황에서 런타임 오류 발생
  • Windows 빌드나 에디터에서는 정상 동작했지만, WebGL에서는 예외 처리가 제대로 동작하지 않음

 

 

시도한 해결 방법

  • Project Settings → Player → Publishing Settings에서 Enable Exceptions 값을 Full 또는 적절한 옵션으로 설정해야 함.
  • 예외 처리를 활성화하면 WebGL 환경에서도 런타임 예외를 올바르게 처리할 수 있음.
  • 정확한 원인은 아직 완전히 이해하지 못했지만, WebGL의 제한적인 예외 처리 방식이 관련이 있을 것으로 추정됨.

새롭게 알게 된 점

  • Instantiate 시 자식 순서가 플랫폼마다 다르게 적용될 수 있으며, SetSiblingIndex로 해결 가능함.
  • WebGL 빌드시 예외 처리를 위해 Enable Exceptions 설정을 조정해야 함.
  • WebGL과 다른 플랫폼의 차이를 이해하고 대응하는 것이 중요함.
728x90