Version: 2021.3
Upgrading to Unity 2021 LTS
Unity 2019 LTS로 업그레이드

Unity 2020 LTS로 업그레이드

참고: 이 섹션의 지침을 릴리스 순서대로 따르십시오. 예를 들어 프로젝트를 2018에서 2020으로 업그레이드해야 하는 경우 2019 업그레이드 가이드를 읽고 변경해야 할 사항이 있는지 확인한 후 2020 업그레이드 가이드를 읽으십시오.

이 페이지에는 2019에서 2020 LTS 버전으로 업그레이드할 경우 기존 프로젝트에 영향을 미칠 수 있는 Unity 2020 LTS 버전의 변경 사항이 나와 있습니다.

2020 LTS2020.3으로도 알려져 있습니다.

페이지 개요


모든 메시 버텍스가 향상된 UV 언래핑을 위해 변환됨

Unity는 프로젝트에 임포트하는 3D 오브젝트의 메시 UV를 변경할 수 있습니다.

Unity는 임포트한 모든 메시 버텍스의 포지션이 Unity 단위로 자동 스케일링되도록 변환합니다.

Unity 2020.1부터 Unity는 Generate Lightmap UVs가 활성화된 경우 변환된 메시 버텍스를 사용하여 라이트맵 UV를 생성합니다. Unity 2020.1 이전 버전에서 Unity는 자동 포지션 변환 전에 원래 임포트된 메시 버텍스 포지션을 사용하여 라이트맵 UV 맵을 생성했습니다.

버텍스 변환 후에 생성된 UV는 임포트된 오브젝트의 원본 모양 및 스케일을 더 정확하게 반영합니다. 맨 위로 이동

모든 에셋 번들 해시가 다르므로 모든 번들이 빌드됨

Unity 2020.1부터 Unity는 프로젝트의 모든 에셋 번들에 대해 다른 해시를 생성합니다. 이렇게 하면 콘텐츠는 같지만 로드 가능 경로가 다른 번들을 포함하여 모든 번들이 빌드됩니다. 맨 위로 이동

프로젝트 업그레이드 시 멀티플레이어 HLAPI 패키지가 자동으로 설치되지 않음

Unity 2020.1부터는 업그레이드하려는 프로젝트에 멀티플레이어 HLAPI를 사용하는 스크립트가 있는 경우 패키지 관리자에서 멀티플레이어 HLAPI 패키지를 설치합니다.

Unity 2019.1부터 2019.4까지 Unity는 Unity 2018.4 이하 버전에서 생성된 프로젝트를 업그레이드할 때 멀티플레이어 HLAPI 패키지를 자동으로 설치했습니다. 맨 위로 이동

프로그레시브 라이트매퍼를 통해 LOD 베이크 향상

Unity의 프로그레시브 라이트매퍼는 CPU 및 GPU 라이트매퍼로 구성됩니다.

Unity 2020.1부터 GPU 라이트매퍼는 디테일 수준(LOD) 베이크를 지원합니다.

CPU 라이트매퍼는 동일한 베이크 알고리즘을 사용하므로 Unity는 LOD 값이 0보다 큰 씬에서 베이크 시간을 단축하기 위해 이용 가능한 모든 CPU 코어를 사용할 수 있습니다.

씬에서 LOD를 업그레이드하려면 베이크된 라이트 맵을 지우고 다시 생성해야 합니다. 이렇게 하려면 다음 단계를 따르십시오.

  1. Unity 에디터에서 Window > Rendering > Lighting Settings를 엽니다.
  2. Debug Settings에서 Generate Lighting 버튼의 드롭다운 메뉴를 선택한 후 Clear Baked Data를 선택합니다.
  3. Generate Lighting을 선택합니다.

맨 위로 이동

어댑티브 퍼포먼스에 대한 중대한 변경 사항

어댑티브 퍼포먼스를 1.0에서 2.0으로 업데이트하려면 어댑티브 퍼포먼스 업그레이드 가이드를 참조하십시오. 맨 위로 이동

Xcode 프로젝트 생성

MacOS Standalone Xcode 프로젝트 빌드 경로 선택이 변경되었습니다. 이제 원하는 디렉토리의 경로를 제공해야 하며, .xcodeproj 및 관련 파일이 타겟 디렉토리 내에 생성됩니다. MacOS 빌드 폴더는 프로젝트 디렉토리 내에 존재할 수 없습니다. Xcode 프로젝트 구조에 대한 매뉴얼 페이지를 참조하십시오.

맨 위로 이동

파티클 시스템 힘 필드에 대한 변경 사항

Force Field 프로퍼티의 일관된 동작을 보장하기 위해 Unity는 이제 30fps의 레퍼런스 프레임 속도를 시뮬레이션의 기준으로 사용합니다. 앱에서 다른 프레임 속도를 사용하는 경우 이 변경 사항은 다음 Force Field 프로퍼티에 영향을 줄 수 있습니다.

  • Gravity
  • Rotation
  • Vector Fields

이 설정이 이전 Unity 버전과 다르게 동작하면 해당 값을 조정하십시오.

맨 위로 이동

UGUI 그래픽 클래스에 대한 변경 사항

UnityEngine.UI.GraphicCanvasRenderer 컴포넌트에 대한 RequireComponent 속성을 더 이상 포함하지 않습니다. 그래픽에서 상속되고 UGUI 캔버스에서 렌더링되는 사용자 작성 클래스를 업데이트하려면 다음 RequireComponent 속성을 추가하십시오.

using UnityEngine;

[RequireComponent(typeof (CanvasRenderer))]
public class exampleClass: Graphic
{
  ...
}

맨 위로 이동

코드 커버리지를 계속 사용하기 위한 코드 최적화 설정

코드 최적화 도입은 코드 커버리지 패키지의 동작 방식을 변경합니다. 2020LTS에서 코드 커버리지 패키지를 프로젝트에 계속 사용하려면 디버그 모드에서 스크립트를 컴파일하도록 코드 최적화를 설정하십시오. 디버그 모드는 C# 디버깅을 활성화하며, 정확한 코드 검사 결과를 얻기 위해 필요합니다. 코드 최적화가 디버그 모드로 설정되었는지 확인하기 위해 다음 중 하나를 수행할 수 있습니다.

  • 에디터에서 디버그 모드로 전환합니다(오른쪽 하단에서 Bug icon > Switch to debug mode 선택).
  • CompilationPipeline API를 사용하여 CompilationPipeline.codeOptimization = CodeOptimization.Debug를 설정합니다.
  • -debugCodeOptimization`을 커맨드 라인에 전달합니다.

맨 위로 이동

AR/VR 플랫폼 지원

이 문서에서는 Unity 2020 릴리스 이전의 Unity 버전을 사용하는 기존 AR/VR 프로젝트를 업그레이드하기 위한 가이드를 제공합니다.

프로젝트 설정에서 AR/VR 활성화

기존 프로젝트를 Unity 2020 릴리스 이상으로 업그레이드하는 경우 지원이 중단된 XR 통합(이전에 플레이어/XR 설정에 위치함)이 비활성화되었다는 알림을 수신해야 합니다.

에셋 임포트 중, Unity 에디터 실행 전
에셋 임포트 중, Unity 에디터 실행 전

AR/VR을 활성화하려면 프로젝트 설정에서 XR 플러그인 관리를 사용하여 타겟 플랫폼을 선택하십시오.

참고: XR 플러그인 관리를 설치하기 전에 업그레이드 관련 스크립트 오류를 수정하는 것이 좋습니다.
참고: XR 플러그인 관리를 설치하기 전에 업그레이드 관련 스크립트 오류를 수정하는 것이 좋습니다.

가상 현실

플랫폼 빌드 타겟 플러그인 공급자
Oculus Quest Android Oculus
Oculus Rift & Rift S 데스크톱 Oculus
Windows Mixed Reality VR UWP Windows Mixed Reality

증강 현실

플랫폼 빌드 타겟 플러그인 공급자
ARCore 기기 Android ARCore
ARKit 기기 iOS ARKit
HoloLens UWP Windows Mixed Reality
Magic Leap One Lumin Magic Leap

최적의 플레이어 설정 사용

프로젝트의 렌더링 및 품질 설정이 최적인지 확인하십시오. 아래 표에는 타겟 플랫폼별 권장 설정이 자세히 나와 있습니다.

가상 현실

플랫폼 그래픽스 API 스테레오 렌더링 모드
Oculus Quest OpenGL ES 3.0 멀티뷰
Oculus Rift & Rift S DX11 싱글 패스 인스턴스화
Windows Mixed Reality VR DX11 싱글 패스 인스턴스화

증강 현실

플랫폼 그래픽스 API 스테레오 렌더링 모드
ARCore 기기 OpenGL ES 3.0 해당 없음
ARKit 기기 Metal 해당 없음
HoloLens DX11 싱글 패스 인스턴스화
Magic Leap One OpenGL ES 3.2 싱글 패스 인스턴스화

참고: “싱글 패스 인스턴스화”가 성능이 더 뛰어나므로 “싱글 패스”는 더 이상 렌더링 모드 옵션이 아닙니다. “싱글 패스”에서 “싱글 패스 인스턴스화”로 업그레이드하려면 프로젝트에서 커스텀 셰이더를 업데이트해야 합니다.

렌더 파이프라인

빌트인 렌더 파이프라인, 유니버설 렌더 파이프라인, 고해상도 렌더 파이프라인 모두 2020.1에서 지원됩니다. 최신 스크립터블 렌더 파이프라인을 사용하면 여러 이점을 누릴 수 있지만, 이 업그레이드 프로세스의 요구 사항은 아닙니다.

참고: 타사 에셋 또는 커스텀 셰이더를 사용하는 경우 “싱글 패스 인스턴스화”와 호환되는 셰이더로 에셋을 업데이트해야 할 수 있습니다.

씬의 카메라

XR 인터랙션 툴킷을 사용하는 경우 카메라 추적을 위해 변경할 사항이 없습니다.

카메라 추적을 위해 타사 툴킷(OVRCameraRig 등)을 사용하는 경우 최신 버전으로 업데이트했는지 확인하십시오. 최신 버전의 타사 툴로 업그레이드하면 스크립트 오류가 발생할 수 있습니다. 그러한 경우 타사 설명서를 참조하십시오.

카메라 추적을 위해 추적 포즈 드라이버를 사용하는 경우 마이그레이션 가이드를 참조하십시오.

타사 툴킷 업그레이드

Unity에서 지원되는 플랫폼(Oculus 통합 패키지, MRTK, MLTK)에서 개발한 툴킷을 사용하는 경우 최신 버전을 사용하고 있는지 확인하십시오. 최신 버전의 타사 툴로 업그레이드하면 업그레이드 관련 스크립트 오류가 발생할 수 있습니다. 그러한 경우 타사 툴킷의 해당 설명서를 참조해야 할 수 있습니다.

FAQ

프로젝트 설정에서 XR 플러그인 관리를 설치할 수 없는 이유는 무엇인가요?

XR 플러그인 관리를 설치하기 전에 수정해야 하는 업그레이드 관련 스크립트 오류가 있을 수 있습니다.

OpenVR 및 Google Cardboard가 XR 플러그인 관리에서 누락된 이유는 무엇인가요?

OpenVR 및 Google Cardboard XR 플러그인은 Valve와 Google에서 각각 개발하고 유지 관리합니다. 두 플랫폼의 설치 지침 링크는 Unity의 문서에서 찾을 수 있습니다.

Unity 입력 시스템이 지원되나요?

예, Unity에서 지원되는 플랫폼 통합은 Unity 입력 시스템과 호환됩니다.

유니버설 렌더 파이프라인과 고해상도 렌더 파이프라인이 지원되나요?

예, Unity에서 지원되는 플랫폼 통합은 유니버설 렌더 파이프라인과 고해상도 렌더 파이프라인 모두와 호환됩니다.

패키지 관리자에서 XR 인터랙션 툴킷을 볼 수 없는 이유는 무엇인가요?

XR 인터랙션 툴킷은 여전히 프리뷰 단계입니다. 2020.1에서 프리뷰 패키지를 보려면 프로젝트 설정의 Package Manager 탭을 사용하여 활성화해야 합니다. 활성화하면 패키지 관리자의 Unity 레지스트리에 프리뷰 패키지가 표시됩니다.

제 공급자에서 에디터가 작동하지 않는 이유는 무엇인가요?

에디터에서 플레이 지원은 해당 공급자에 대한 스탠드얼론 지원이 있는 공급자에 대해서만 작동합니다. 공급자가 XR 플러그인 관리 공급자 선택 UI의 스탠드얼론 섹션에 나와 있지 않으면 에디터에서 플레이가 작동하지 않습니다. 에디터에서 플레이 지원을 통합하기 위한 다른 수단을 제공할 수도 있으므로 공급자 설명서를 확인하십시오.

“싱글 패스” 렌더링 모드를 사용할 수 없는 이유는 무엇인가요?

“싱글 패스 인스턴스화”가 성능이 더 뛰어나므로 “싱글 패스”는 2020.1에서 더 이상 지원되지 않습니다. 프로젝트가 “싱글 패스”를 사용했다면 프로젝트의 셰이더를 업데이트해야 할 수 있습니다. “싱글 패스”에 커스텀 셰이더를 사용하는 타사 라이브러리도 업데이트해야 할 수 있습니다. 셰이더가 작동하도록 “싱글 패스”에서 “멀티 패스”로 업그레이드할 수 있지만, 최대 성능을 위해 “싱글 패스 인스턴스화”를 대상으로 지정하는 것이 좋습니다.

그래픽스 API를 설정하는 방법은 무엇인가요?

그래픽스 API는 플레이어 설정(“Edit” > “Project Settings” > “Player”)에서 지정합니다.

스테레오 렌더링 모드를 설정하는 방법은 무엇인가요?

렌더링 모드는 프로젝트 설정의 XR 플러그인 관리에 있는 공급자별 설정에서 지정합니다.

XR 설정 API를 사용하는 renderScale에서 오류가 발생하는 이유는 무엇인가요?

renderScale은 제거되고 eyeTextureResolutionScale로 대체되었지만, 이는 2019.3 이후 스크립트 업데이터 작업이었습니다. 2019.3 이전의 Unity 버전에서 업그레이드하는 경우에는 renderScale을 eyeTextureResolutionScale로 수동으로 대체해야 합니다.

제 컨트롤러의 입력(예: 버튼 누름)이 XR 인터랙션 툴킷에서 인식되지 않는 이유는 무엇인가요?

기기 입력을 감지하려면 먼저 헤드셋을 감지해야 합니다. 일반적인 테스트 문제 중 하나는 많은 사람들이 상호작용을 디버깅하는 동안 헤드셋을 테이블 위에 올려둔다는 것입니다. 컨트롤러는 헤드셋을 착용하거나 헤드셋 내부의 근접 센서가 활성화될 때까지 인식되지 않습니다. 기기에서 입력을 받지 못하는 경우 앱을 시작한 후 헤드셋을 착용하거나 근접 센서를 가리십시오.

AR 파운데이션 앱에서 iPhone의 광각 카메라를 사용할 수 있나요?

ARKit은 카메라의 FOV를 변경하는 옵션을 제공하지 않습니다.

맨 위로 이동

Upgrading to Unity 2021 LTS
Unity 2019 LTS로 업그레이드