Search Unity

이제 Unity 2020.2 베타 버전에서 Unity Safe Mode를 사용할 수 있습니다. Safe Mode를 사용하면 스크립트 컴파일 오류가 있는 프로젝트를 열 때 Unity가 더 효과적으로 대응합니다.

에디터를 시작할 때 컴파일 오류가 발견되면 Safe Mode로 전환하라는 메시지가 표시됩니다. Safe Mode는 컴파일 오류를 해결하기에 최적의 환경을 제공하며, 프로젝트 에셋이 모두 임포트될 때까지 기다리지 않고도 정상적인 상태의 프로젝트로 신속하게 복구할 수 있습니다. 따라서 프로젝트를 최신 Unity 버전으로 더 간편하고 빠르게 업그레이드할 수 있으며, 라이브러리 폴더에 잘못된 임포트 아티팩트가 포함된 경우를 최소화하여 대규모 프로젝트를 더 원활하게 진행할 수 있습니다.

Unity Safe Mode가 트리거되는 방식

문제 해결 및 기능 개선

유니티는 사용자와 내부 제작 팀의 피드백을 기반으로 Unity 사용 경험을 지속적으로 개선하고 있습니다. 예를 들어 프로젝트를 업그레이드할 때 초기에 스크립트를 컴파일하고 에셋을 임포트하는 동안 오류 감지 및 보고 과정에서 Unity의 대응 방식을 개선할 필요가 있었습니다.

최근 에디터를 시작할 때 Unity가 작동하는 방식과 사용자에게 컴파일 오류를 보고하는 방식, 그리고 프로젝트를 포함하는 환경이나 도메인을 시작하는 초기 프로세스를 개선했습니다. 이번 포스팅에서는 이와 관련한 문제를 해결하기 위해 2020.2에 포함된 수정 사항을 알려드립니다.

실제로 많은 프로젝트가 스크립트를 이용하여 포스트 프로세싱이나 커스텀 스크립터블 임포터 작업을 수행하고 프리팹을 바르게 역직렬화하며, 이때 프로젝트에 포함된 코드를 직접 사용하거나 패키지를 사용하여 작업합니다. 스크립트와 패키지에 컴파일 오류가 발생하면 해당하는 어셈블리를 로드할 수 없고 컴파일할 수 없기 때문에 코드도 실행되지 않습니다. Unity의 이전 버전에서는 컴파일이 완료되면 프로젝트를 부분적으로 로드한 다음 모든 에셋을 계속해서 임포트했습니다. 하지만 프로젝트가 부분적으로 로드된 상태에서는 다양한 문제가 발생하므로 이를 해결하고자 Safe Mode를 개발하게 되었습니다.

Unity Safe Mode 소개

Unity 2020.2 버전에서는 에디터를 시작할 때 컴파일 오류가 발생하면 새로운 Safe Mode로 전환하라는 메시지가 표시됩니다. Safe Mode에서는 프로젝트를 관리하고, 컴파일 오류를 해결하고, 프로젝트 환경을 정상 상태로 복구할 수 있습니다. 

Safe Mode에서는 최소한의 에디터 사용자 인터페이스와 제한된 기능만을 사용할 수 있으므로 프로젝트의 나머지 부분을 열기 전 컴파일 오류를 해결하는 데 집중할 수 있습니다. Safe Mode 인터페이스에서는 다음 기능을 사용할 수 있습니다.

  • 프로젝트 뷰(스크립트 및 어셈블리 정의 파일 관리 기능 제공)
  • 코드 에디터 통합
  • 패키지 관리자 창
  • 콘솔
  • 인스펙터
  • 프로젝트 설정
  • 버전 관리 지원(Unity Collaborate 제외)

Safe Mode에서는 프로젝트나 패키지에서 관리되는 코드를 실행하지 않습니다. 따라서 심각한 오류가 있는 프로젝트를 열어도 에디터가 정상적이고 안정적인 상태로 작동합니다.

더 이상 컴파일 오류가 없다고 판단되면 Unity는 Safe Mode를 자동으로 종료합니다. 그러면 프로젝트 전체가 임포트되며 에디터의 모든 기능을 정상적으로 사용할 수 있습니다.

Safe Mode의 문제 해결

  • 에셋 임포트 전에 Safe Mode로 전환: 이제 Unity는 스크립트를 포함하지 않은 에셋을 임포트하기 전 먼저 Safe Mode로 전환합니다. Safe Mode에서 프로젝트를 열고 컴파일 오류를 수정하면 전체 프로젝트가 먼저 임포트되기를 기다렸다가 컴파일 오류를 수정하는 것보다 훨씬 빠릅니다. 특히 프로젝트를 최신 Unity 버전으로 업그레이드하는 중 API 호환성에 문제가 발생했을 때 유용합니다.
  • 부정확한 오류 메시지 문제 해결: 이전에는 Unity를 업그레이드한 후 컴파일 오류가 발생한 프로젝트를 열면 스크립트가 로드되지 않은 상태에서 임포트를 시작하며 오류 메시지가 표시되었습니다. 하지만 이 오류는 “진짜”가 아니기 때문에(스크립트가 아직 로드되지 않은 정보에 의존하여 메시지 출력) 프로젝트 업그레이드 및 문제 해결 워크플로가 복잡해지고 프로젝트가 지연되었습니다. 컴파일 오류가 수정되면 오류가 더 이상 발생하지 않습니다. Safe Mode에서는 컴파일 오류가 해결될 때까지 에셋 임포트가 지연되므로 부정확한 오류 메시지가 생성되지 않습니다.
  • 손상된 아티팩트 캐싱 문제 해결: “머티리얼 프리뷰가 분홍색으로 나타나는 이유가 무엇인가요?” (“라이브러리 폴더 삭제를 시도했나요?”)라는 질문과 관련한 문제입니다. 프로젝트가 부분적으로 로드된 상태에서 에셋을 임포트할 때, 라이브러리 캐시 폴더에서 잘못된 아티팩트를 캐싱하는 경우가 있었습니다. 에셋 종속성이 올바르게 선언되지 않은 경우 Unity가 잘못 캐싱된 아티팩트에서 프로젝트를 자동으로 복구할 수 없으며, 이로 인해 프로젝트 작업 시 예측할 수 없는 동작이 발생했습니다. Safe Mode를 사용하면 손상된 아티팩트가 캐싱되는 경우를 크게 줄일 수 있습니다. 
  • 임포트 시간 단축: “Unity가 모든 텍스처를 다시 임포트한 이유가 무엇인가요?”라는 질문과 관련한 문제입니다. 에셋 임포터 및 포스트 프로세서 C# 코드에 에셋 종속성이 올바르게 선언된 경우, 부분적으로 로드된 프로젝트는 컴파일 오류를 수정하기 전에 많은 수의 에셋을 한 번 임포트하고(불필요한 프로세스), 컴파일 오류를 수정한 후에 한 번 더 임포트하기 때문에 전체 임포트 시간이 크게 늘어납니다. Safe Mode에서 모든 컴파일 오류를 해결하면 중복된 임포트를 방지할 수 있습니다.
  • 불필요한 중복 리임포트 문제 해결: 프로젝트 스크립트를 반복 작업하는 도중 Unity를 다시 시작하면 현재 스크립트 버전이 컴파일되지 않는 경우 불필요한 리임포트가 발생할 수 있습니다. 이때 Safe Mode를 사용하면 프로젝트 환경을 정상 상태로 더 빨리 복구할 수 있으므로 에디터를 다시 시작해도 코드 반복 작업에 거의 영향을 주지 않습니다.
  • 의도하지 않은 손상 문제 해결: 컴파일 오류로 인해 씬이나 프리팹 저장에 필요한 스크립트가 올바르게 로드되지 않은 상태에서 사용자가 의도치 않게 부분적으로 로드된 프로젝트에 작업하게 되면 씬이나 프리팹이 손상될 수 있습니다. Safe Mode는 스크립트에 오류가 발생한 프로젝트를 열 때 안전한 액션만 허용하여 이 문제를 방지합니다.

위와 같은 문제 해결을 통해 Safe Mode는 프로젝트 업그레이드 과정을 크게 개선하고 프로젝트를 복구해야 하는 위험을 줄입니다.

Unity Safe Mode에서 Unity 프로젝트 내 Vector3의 잘못된 선언 문제 해결

배치 모드

이전 버전에서는 Unity를 배치 모드로 실행할 때도 컴파일 오류가 발생한 상태에서 부분적으로 프로젝트를 로드하고 모든 에셋을 임포트했습니다. 임포트가 완료되면 커맨드 라인 인자를 통해 별도로 지시하지 않는 한, 기본적으로 오류 메시지가 표시되며 Unity가 종료되었습니다. Unity 2020.2 버전에서는 이 동작을 수정했습니다. 이제 배치 모드에서 기본적으로 프로젝트를 부분적으로 로드하거나 에셋을 임포트하지 않으며, 컴파일 에러가 감지된 즉시 오류 메시지가 표시되며 Unity가 종료됩니다. 따라서 컴파일 오류가 있어도 배치 모드가 훨씬 빠르게 완료됩니다. 또한 CI(지속적 통합) 시스템이 프로젝트의 에셋 캐시 서버를 잘못된 임포트 아티팩트로 채워 프로젝트를 작업하는 모든 컴퓨터에 문제를 일으키는 것을 방지합니다.

피드백을 공유해주세요

Unity의 새로운 Safe Mode를 사용해보고 피드백을 공유해주세요. 특히 Safe Mode에 꼭 있어야 할 중요한 기능이 빠졌다고 생각하신다면 꼭 알려주세요. 피드백은 포럼에서 제출할 수 있습니다.

커뮤니티 피드백은 유니티의 R&D와 QA 팀이 릴리스를 안정화하고 기능을 개선하며 생산성이 향상된 워크플로를 구현하는데 필수적입니다.

Unity 2020.2 베타를 사용하시고 의견을 남겨주세요

Unity 2020.2 버전은 성능, 안정성 및 워크플로면에서 다양하게 개선이 이루어졌습니다. 베타 테스트에 참여하여 앞으로 출시될 툴에 대한 의견을 알려주시기 바랍니다.

5 replies on “2020.2 베타에서 Unity Safe Mode 체험해 보기”

Honestly, one of the many cases that Unity bring us things I never thought I needed until I heard about it. That should prevent me from chasing after ghosts.
Thank you, and keep up the good work!

in theory a good idea, in practice useless because it fails at pointing out errors so you need to revert to normal editor mode to get a comprehensive list of errors.

Safe Mode will only point out compilation errors. Other errors will be available after resolving all compilation errors (which would cause Safe Mode to exit automatically). This is by design as import errors in a project which does not compile might be fake. If you have a scenario where you believe that there’s errors (which should have been shown in Safe Mode) were missing, please report a bug to Unity so we can make sure Safe Mode functions correctly in your case.

One of my students ran into this today and it worked brilliantly! Glad I read your blog post before that.

Comments are closed.