참고: 이 섹션의 지침을 릴리스 순서대로 따르십시오. 예를 들어 프로젝트를 2019에서 2021로 업그레이드해야 하는 경우 2020 업그레이드 가이드를 읽고 변경해야 할 사항이 있는지 확인한 후 2021 업그레이드 가이드를 읽으십시오.
이 페이지에는 2019에서 2020 LTS 버전으로 업그레이드할 경우 기존 프로젝트에 영향을 미칠 수 있는 Unity 2020 LTS 버전의 변경 사항이 나와 있습니다.
2020 LTS는 2020.3으로도 알려져 있습니다.
이 업그레이드 가이드에서는 2020 버전의 Unity 빌트인 렌더 파이프라인으로 업그레이드하는 방법을 설명합니다. 다른 렌더 파이프라인에서 2020 버전으로 업그레이드하려면 다음을 참조하십시오.
다른 패키지를 업그레이드하려면 사용하는 패키지의 문서를 참조하십시오.
Unity는 프로젝트에 임포트하는 3D 오브젝트의 메시 UV를 변경할 수 있습니다.
Unity는 임포트한 모든 메시 버텍스의 포지션이 Unity 단위로 자동 스케일링되도록 변환합니다.
Unity 2020.1부터 Unity는 Generate Lightmap UVs가 활성화된 경우 변환된 메시 버텍스를 사용하여 라이트맵 UV를 생성합니다. Unity 2020.1 이전 버전에서 Unity는 자동 포지션 변환 전에 원래 임포트된 메시 버텍스 포지션을 사용하여 라이트맵 UV 맵을 생성했습니다.
버텍스 변환 후에 생성된 UV는 임포트된 오브젝트의 원본 모양 및 스케일을 더 정확하게 반영합니다. 맨 위로 이동
Unity 2020.1부터 Unity는 프로젝트의 모든 에셋 번들에 대해 다른 해시를 생성합니다. 이렇게 하면 콘텐츠는 같지만 로드 가능 경로가 다른 번들을 포함하여 모든 번들이 빌드됩니다. 맨 위로 이동
Unity 2020.1부터는 업그레이드하려는 프로젝트에 멀티플레이어 HLAPI를 사용하는 스크립트가 있는 경우 패키지 관리자에서 멀티플레이어 HLAPI 패키지를 설치합니다.
Unity 2019.1부터 2019.4까지 Unity는 Unity 2018.4 이하 버전에서 생성된 프로젝트를 업그레이드할 때 멀티플레이어 HLAPI 패키지를 자동으로 설치했습니다. 맨 위로 이동
Unity의 프로그레시브 라이트매퍼는 CPU 및 GPU 라이트매퍼로 구성됩니다.
Unity 2020.1부터 GPU 라이트매퍼는 디테일 수준(LOD) 베이크를 지원합니다.
CPU 라이트매퍼는 동일한 베이크 알고리즘을 사용하므로 Unity는 LOD 값이 0보다 큰 씬에서 베이크 시간을 단축하기 위해 이용 가능한 모든 CPU 코어를 사용할 수 있습니다.
씬에서 LOD를 업그레이드하려면 베이크된 라이트 맵을 지우고 다시 생성해야 합니다. 이렇게 하려면 다음 단계를 따르십시오.
어댑티브 퍼포먼스를 1.0에서 2.0으로 업데이트하려면 어댑티브 퍼포먼스 업그레이드 가이드를 참조하십시오. 맨 위로 이동
MacOS Standalone Xcode 프로젝트 빌드 경로 선택이 변경되었습니다. 이제 원하는 디렉토리의 경로를 제공해야 하며, .xcodeproj 및 관련 파일이 타겟 디렉토리 내에 생성됩니다. MacOS 빌드 폴더는 프로젝트 디렉토리 내에 존재할 수 없습니다. Xcode 프로젝트 구조에 대한 매뉴얼 페이지를 참조하십시오.
Force Field 프로퍼티의 일관된 동작을 보장하기 위해 Unity는 이제 30fps의 레퍼런스 프레임 속도를 시뮬레이션의 기준으로 사용합니다. 앱에서 다른 프레임 속도를 사용하는 경우 이 변경 사항은 다음 Force Field 프로퍼티에 영향을 줄 수 있습니다.
이 설정이 이전 Unity 버전과 다르게 동작하면 해당 값을 조정하십시오.
UnityEngine.UI.Graphic
은 CanvasRenderer
컴포넌트에 대한 RequireComponent
속성을 더 이상 포함하지 않습니다. 그래픽에서 상속되고 UGUI 캔버스에서 렌더링되는 사용자 작성 클래스를 업데이트하려면 다음 RequireComponent
속성을 추가하십시오.
using UnityEngine;
[RequireComponent(typeof (CanvasRenderer))]
public class exampleClass: Graphic
{
...
}
코드 최적화 도입은 코드 커버리지 패키지의 동작 방식을 변경합니다. 2020LTS에서 코드 커버리지 패키지를 프로젝트에 계속 사용하려면 디버그 모드에서 스크립트를 컴파일하도록 코드 최적화를 설정하십시오. 디버그 모드는 C# 디버깅을 활성화하며, 정확한 코드 검사 결과를 얻기 위해 필요합니다. 코드 최적화가 디버그 모드로 설정되었는지 확인하기 위해 다음 중 하나를 수행할 수 있습니다.
CompilationPipeline.codeOptimization = CodeOptimization.Debug
를 설정합니다.이 문서에서는 Unity 2020 릴리스 이전의 Unity 버전을 사용하는 기존 AR/VR 프로젝트를 업그레이드하기 위한 가이드를 제공합니다.
기존 프로젝트를 Unity 2020 릴리스 이상으로 업그레이드하는 경우 지원이 중단된 XR 통합(이전에 플레이어/XR 설정에 위치함)이 비활성화되었다는 알림을 수신해야 합니다.
AR/VR을 활성화하려면 프로젝트 설정에서 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)에서 개발한 툴킷을 사용하는 경우 최신 버전을 사용하고 있는지 확인하십시오. 최신 버전의 타사 툴로 업그레이드하면 업그레이드 관련 스크립트 오류가 발생할 수 있습니다. 그러한 경우 타사 툴킷의 해당 설명서를 참조해야 할 수 있습니다.
XR 플러그인 관리를 설치하기 전에 수정해야 하는 업그레이드 관련 스크립트 오류가 있을 수 있습니다.
OpenVR 및 Google Cardboard XR 플러그인은 Valve와 Google에서 각각 개발하고 유지 관리합니다. 두 플랫폼의 설치 지침 링크는 Unity의 문서에서 찾을 수 있습니다.
예, Unity에서 지원되는 플랫폼 통합은 Unity 입력 시스템과 호환됩니다.
예, Unity에서 지원되는 플랫폼 통합은 유니버설 렌더 파이프라인과 고해상도 렌더 파이프라인 모두와 호환됩니다.
XR 인터랙션 툴킷은 여전히 프리뷰 단계입니다. 2020.1에서 프리뷰 패키지를 보려면 프로젝트 설정의 Package Manager 탭을 사용하여 활성화해야 합니다. 활성화하면 패키지 관리자의 Unity 레지스트리에 프리뷰 패키지가 표시됩니다.
에디터에서 플레이 지원은 해당 공급자에 대한 스탠드얼론 지원이 있는 공급자에 대해서만 작동합니다. 공급자가 XR 플러그인 관리 공급자 선택 UI의 스탠드얼론 섹션에 나와 있지 않으면 에디터에서 플레이가 작동하지 않습니다. 에디터에서 플레이 지원을 통합하기 위한 다른 수단을 제공할 수도 있으므로 공급자 설명서를 확인하십시오.
“싱글 패스 인스턴스화”가 성능이 더 뛰어나므로 “싱글 패스”는 2020.1에서 더 이상 지원되지 않습니다. 프로젝트가 “싱글 패스”를 사용했다면 프로젝트의 셰이더를 업데이트해야 할 수 있습니다. “싱글 패스”에 커스텀 셰이더를 사용하는 타사 라이브러리도 업데이트해야 할 수 있습니다. 셰이더가 작동하도록 “싱글 패스”에서 “멀티 패스”로 업그레이드할 수 있지만, 최대 성능을 위해 “싱글 패스 인스턴스화”를 대상으로 지정하는 것이 좋습니다.
그래픽스 API는 플레이어 설정(“Edit” > “Project Settings” > “Player”)에서 지정합니다.
렌더링 모드는 프로젝트 설정의 XR 플러그인 관리에 있는 공급자별 설정에서 지정합니다.
renderScale은 제거되고 eyeTextureResolutionScale로 대체되었지만, 이는 2019.3 이후 스크립트 업데이터 작업이었습니다. 2019.3 이전의 Unity 버전에서 업그레이드하는 경우에는 renderScale을 eyeTextureResolutionScale로 수동으로 대체해야 합니다.
기기 입력을 감지하려면 먼저 헤드셋을 감지해야 합니다. 일반적인 테스트 문제 중 하나는 많은 사람들이 상호작용을 디버깅하는 동안 헤드셋을 테이블 위에 올려둔다는 것입니다. 컨트롤러는 헤드셋을 착용하거나 헤드셋 내부의 근접 센서가 활성화될 때까지 인식되지 않습니다. 기기에서 입력을 받지 못하는 경우 앱을 시작한 후 헤드셋을 착용하거나 근접 센서를 가리십시오.
ARKit은 카메라의 FOV를 변경하는 옵션을 제공하지 않습니다.