Version: 2022.1
언어: 한국어
레거시 업그레이드 가이드
Unity 2017.3으로 업그레이드

Unity 2018 LTS로 업그레이드

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

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

2018 LTS2018.4로도 알려져 있습니다.

페이지 개요


향상된 프리팹

  • 프리팹은 새로운 프리팹 시스템으로 자동 업그레이드됩니다.
  • 프리팹 네스팅을 지원하기 위해 프리팹 워크플로가 변경되었습니다. 프리팹을 편집하려면 프리팹 모드에서 프리팹을 열어야 합니다. 프로젝트 브라우저에서는 더 이상 프리팹을 편집할 수 없습니다.
  • 프리팹 모드에서 게임 오브젝트 삭제, 게임 오브젝트의 부모 재지정, 트랜스폼을 RectTransform으로 변경 등과 같은 구조적 변경 작업을 수행할 수 있습니다. 또는 프리팹 에셋에 대한 링크를 완전히 제거하여 필요에 따라 결과물로 얻은 플레인 게임 오브젝트의 구조를 변경하고 싶은 경우에는 프리팹 인스턴스를 언팩할 수도 있습니다.
  • 게임 오브젝트를 생성하는 에디터 툴링은 ObjectFactory.CreateGameObject을 사용하여, 프리팹 에셋이 현재 프리팹 모드에서 편집되고 있는 경우 게임 오브젝트가 프리팹 씬에 나타나도록 해야 합니다.
  • 안전 예방을 위해 [ExecuteInEditMode] 속성이 포함된 스크립트는 열린 프리팹에 해당 속성이 있는 경우 에디터에서 플레이 모드로 진입할 때 프리팹 모드를 종료시킵니다. 이러한 스크립트가 프리팹 모드와 호환되도록 만드는 방법은 스크립팅 레퍼런스 페이지에서 ExecuteInEditMode 속성과 새로 추가된 ExecuteAlways 속성을 참조하십시오.
  • 프리팹은 임포트된 에셋이므로 스크립트에서 프리팹 에셋을 임의로 수정할 수 없습니다. 대신 PrefabUtility.LoadPrefabContents, PrefabUtility.SaveAsPrefabAsset, PrefabUtility.UnloadPrefabContents를 사용해야 합니다.
  • AssetDatabase.AddObjectToAsset을 사용하여 에셋을 프리팹에 추가하는 경우 이제는 필수 오브젝트를 추가한 후 PrefabUtility.SavePrefabAsset을 호출해야 합니다.

맨 위로 이동

이제 USS 플렉스 속기 확장이 CSS 표준을 준수함

  • 이제 USS 플렉스 지시문은 flex-grow, flex-shrinkflex-basis를 나타내는 최대 3개의 파라미터를 허용합니다. flex-shrink 및 flex-basis 파라미터는 선택 사항입니다. 생략할 경우 flex-basis는 0, flex-shrink는 1로 기본값이 각각 지정됩니다.
  • 2018.3 이전에는 flex: Nflex N 0 auto와 동등했습니다. 이제는 flex: N 1 0과 동등하도록 만들어 CSS 표준을 따릅니다. 예전 시맨틱을 보전하려면 USS 파일의 모든 flex: N 지시문을 flex: N 0 auto로 교체해야 합니다.

맨 위로 이동

관리되는 사용자 스레드에서 처리되지 않은 예외 로깅 지원

  • 2018.3 이전에는 Unity 에디터가 관리되는 사용자 스레드에서 발생한 처리되지 않은 예외를 기록하지 않았습니다. 2018.3 이후에는 관리되는 사용자 스레드에서 발생하는 처리되지 않은 예외가 Unity 에디터 콘솔에 기록됩니다.
  • 이제는 모든 관리되는 사용자 스레드가 로깅에 포함되기 때문에 프로젝트에서 발생했지만 지금까지 콘솔에 전달되지 않았던 예외를 언제든지 확인할 수 있습니다.

맨 위로 이동

이제 VFACE 셰이더 변수가 DirectX(11&12)에서 반전됨

  • 큐브맵으로 렌더링할 때 VFACE 셰이더 변수는 DirectX와 다른 그래픽스 API간에 일관되지 않았습니다. 이제는 동일한 동작을 수행합니다.
  • DirectX에서 VFACE bool 셰이더 변수를 사용하여 큐브맵을 렌더링하는 경우 코드의 로직을 뒤집어야 합니다.
  • 문제 ID 1027670을 참조하십시오.

맨 위로 이동

PhysX가 3.3.1에서 3.4.2로 업그레이드됨

물리 행동이 변경되었으며, 일부 프로젝트가 신규 버전과 다르게 동작할 수 있습니다. 다음이 대표적인 예입니다.

  • 이제 컨택트 패치는 Persistent Contact Manifold 모드에서 최대 6개의 컨택트를 포함합니다. 이는 이전 버전의 패치당 5개 컨택트에서 증가한 수치입니다. 매니폴드의 패치를 병합하는 신규 코드와 컨택트를 선택하는 신규 코드가 추가되었습니다. 충돌은 이전보다 훨씬 더 정확하게 보입니다. 신규 코드와 호환 가능하도록 만들기 위해 컨택트의 특정 배열을 사용하는 프로젝트에 대해 작업을 수행해야 할 수 있습니다. 볼록한 바디가 메시와 프리미티브와 충돌할 때 이러한 점을 쉽게 확인할 수 있습니다.
  • 새로운 알고리즘을 사용하여 contacts with terrains 를 계산합니다. 예전에는 특수한 경우였지만, 이제는 MeshCollider에서 사용되는 것과 동일한 메시-프리미티브 코드입니다. 이 코드는 신뢰할 수 있고 정확하며 성능이 우수합니다. 하지만 TerrainData.thickness를 지원하지 않습니다. 즉 지형의 터널링 효과가 이제 가능합니다. 이를 방지하려면 빠르게 이동하는 오브젝트에 대해 연속 충돌 검사를 활성화해야 합니다. 이전에는 바디가 지형 아래의 TerrainData.thickness보다 깊지 않은 것으로 감지되면 자동으로 돌출되었지만, 노멀이 정확하지 않았습니다. 예전 동작을 사용하려면 물리 설정에서 Enable Unified Heightmaps 옵션을 선택 해제하십시오.
  • Negative mesh scaling은 모든 경우에 메시 베이킹으로 직접 연결되지 않습니다. 오목한 메시는 더 이상 베이크되지 않습니다. 하지만 볼록한 메시는 여전히 스케일링을 베이크해야 합니다. 이러한 변화로 인해 네거티브 스케일링은 scale.x * scale.y * scale.z < 0일때 메시 노멀을 반전합니다. 또한 skew와 shear 같은 의미 있는 스케일링은 예전처럼 계속 베이크해야 합니다.
  • Convex mesh inflation 은 입력 메시의 모든 결함에 대해 더욱 관대한 새로운 볼록 헐 계산 알고리즘(Quickhull)에 필요하지 않기 때문에 지원이 중단되었습니다.

맨 위로 이동

AssetBundle.mainAsset 프로퍼티가 더 이상 사용되지 않는 것으로 표시됨

  • Unity 5.0 버전 이하에서 사용자들은 AssetBundleBuildAssetBundle API를 사용하여 에셋 번들을 빌드해야 했습니다. 이 API는 에셋 번들의 mainAsset 프로퍼티를 사용하여 로드할 때 반환되는 오브젝트를 제공하도록 요구했습니다.
  • Unity 5.0에서 AssetBundle.BuildAssetBundle API가 더 이상 사용되지 않는 것으로 표시되고 AssetBundle.BuildAssetBundles로 교체되었습니다. 이로 인해 에셋 번들에서 에셋을 가져오는 방식이 바뀌었습니다.
  • 이제는 에셋 번들에서 콘텐츠를 가져오려면 에셋의 이름이나 AssetBundle.LoadAsset API가 포함된 경로를 가져와야 합니다. 자세한 내용은 에셋 번들 빌드, 에셋 번들의 전문적인 활용, 에셋 번들 스크립팅 API에 관한 문서를 참조하십시오.

맨 위로 이동

NavMesh 컴포넌트를 사용하는 프로젝트 업그레이드

  • 2018.2 이하 버전에서 2018.3b 버전으로 프로젝트를 이동하고 Unity의 GitHub 저장소에서 가져온 NavMesh 컴포넌트를 사용하는 경우 이제는 이 브랜치를 사용해야 합니다.

맨 위로 이동

파티클 시스템 버그 수정

Unity 2018.3에는 일부 파티클 버그 수정이 포함되어 있으며, 이는 이전 버전에서 생성된 프로젝트에 영향을 줄 수 있습니다.

  • 빌보드 파티클에 비균일 트랜스폼 스케일을 사용할 때 Y축과 Z축이 반전되는 문제가 수정되었습니다.
  • 메시 파티클에 비균일 트랜스폼 스케일을 사용할 때 스케일링 후에 회전이 적용되었습니다. 이는 2017.x 버전의 문제로, 5.6 버전 이전에서는 정확히 동작했지만 2017 사이클에서 손상되었습니다. 이 버그를 수정하면 5.6 이전 버전에서 생성된 콘텐츠의 문제는 해결되지만 2017.x 버전에서 생성된 콘텐츠가 변경됩니다.
  • 구형 윈드 존이 나무와 달리 파티클에 반대 효과를 주었습니다. 이 문제는 구형 윈드 존이 파티클을 끌어당기는 것이 아니라 밀어내도록 변경하여 해결되었습니다. 외부 힘 멀티플라이어 또는 윈드 존 강도를 무효화하여 이전 동작을 복원할 수 있습니다. 나무 또는 방향 윈드 존이 포함된 씬에 잘못된 영향을 줄 수 있기 때문에 Unity는 이 옵션을 자동으로 변경하지 않습니다.

맨 위로 이동

C# 컴파일러가 Roslyn으로 업그레이드

2018.3 이전에 Unity 에디터는 모노 C# 컴파일러(mcs)를 사용하여 프로젝트의 C# 파일을 컴파일했습니다. 2018.3 이상에서는 Roslyn C# 컴파일러(csc)가 새로운 스크립팅 런타임(.NET 4.x Equivalent)을 타겟팅하는 프로젝트에 사용됩니다. Roslyn으로 전환하면 다음과 같은 여러 동작을 목격할 수 있습니다.

  • C# 7.3이 지원됨
  • 추가 경고가 보고될 수 있음
  • Roslyn 컴파일러용 리스폰스 파일의 이름은 csc.rsp여야 합니다. PlatformDependentCompilation을 참조하십시오.

맨 위로 이동

UnityScript 및 Boo 스크립트 컴파일러가 제거됨

UnityScript(.js) 및 Boo(.boo) 스크립트 파일은 이제 에디터에서 컴파일할 수 없습니다.

자세한 내용은 2017년 8월 블로그 포스트에서 확인할 수 있으며 unityscript2csharp 툴을 사용하여 UnityScript를 C#으로 전환할 수 있습니다.

맨 위로 이동

애니메이터 루트 모션 재생이 변경됨

애니메이션 창에서 루트 모션 애니메이션을 작성할 때 발생하는 일부 불일치 문제를 수정하기 위해 애니메이터 루트 모션 재생이 약간 변경되었습니다.

  • 애니메이션 클립 때문에 루트 모션 커브를 생성할 필요가 없습니다. 이제 루트 모션 애니메이션은 Animator.applyRootMotion만을 기반으로 합니다.

2018.2 - 2018.4 동질성

사례 생성되는 루트 모션 Animator.applyRootMotion 2018.2 2018.3 & 2018.4 (LTS)
A 지원 지원 루트 모션을 루트 트랜스폼에 점증적으로 적용합니다. 2018.2와 동일함
B 지원 안 함 지원 안 함 애니메이션 클립에서 작성된 대로 포지션, 회전 및 스케일 커브를 적용합니다. 2018.2와 동일함
C* 지원 지원 안 함 루트 트랜스폼 움직임 없음 애니메이션 클립에서 작성된 대로 포지션, 회전 및 스케일을 적용합니다.
D* 지원 안 함 지원 루트 트랜스폼 움직임 없음 루트 모션을 루트에 점증적으로 적용합니다.

C 및 D 사례의 경우 2018.3과 동일한 결과를 얻으려면 OnAnimatorMove를 구현하십시오. 그런 다음 루트 모션을 적용하고 싶지 않으면 Animator.deltaPositionAnimator.deltaRotation을 폐기하십시오.

프로젝트가 applyRootMotion을 사용하여 루트 트랜스폼의 포지션, 회전 및 스케일 애니메이션을 “뮤트”한 후 Root Transform 프로퍼티를 수동으로 오버라이드해야 합니다.

맨 위로 이동

UIElements.ContextualMenu 변경 사항

이제 UIElements.ContextualMenu 메뉴 액션 콜백이 EventBase 파라미터 대신 ContextualMenu.MenuAction 파라미터를 갖습니다.

ContextualMenu.InsertSeparator는 추가 string 파라미터를 갖습니다.

맨 위로 이동

멀티플레이어: 지원이 중단된 레거시 네트워킹 API가 제거됨(RakNet 기반)

이 기능은 Unity 5.1에서 지원이 중단되었고 이제는 제거되었습니다. Unity 2018.2에서는 이 기능을 프로젝트에 사용할 수 없습니다.

Unity의 네트워킹에 관한 자세한 내용은 멀티플레이어 및 네트워킹 섹션을 참조하십시오.

맨 위로 이동

투명도를 사용하여 Photoshop 데이터 파일(PSD) 임포트

실제 투명도가 있는 경우 Photoshop은 픽셀 컬러를 미세 조정하여 매트(백그라운드) 컬러와 혼합합니다. 알파 채널을 올바르게 준비하는 프로세스는 알파 채널 준비 방법 문서에 자세히 나와 있습니다.

이 문서에서 확장은 무시할 수 있습니다. 이 노트의 핵심은 투명도가 아니라 별도의 알파 채널/마스크가 포함된 ‘불투명’ 이미지가 있어야 한다는 점입니다. Unity는 컬러를 미세 조정하여 매트를 ’제거’했지만, 이는 2018.2에서 중지되었습니다. 투명도가 포함된 PSD가 있는 경우 모서리에 흰색이 보일 수 있습니다. 이 문제를 해결하려면 위의 수동 링크를 참조하여 투명도 대신 실제 알파 채널을 만드십시오.

맨 위로 이동

게임 오브젝트가 비활성화되거나 삭제되면 MonoBehaviour에서 반환되는 코루틴이 더 이상 시작되지 않음

예전에는 게임 오브젝트가 비활성화되거나 삭제되면 해당 자식 MonoBehaviour에서 실행 중인 코루틴이 모두 중지되었습니다. 하지만 특정한 경우 호출된 메서드에서 시작된 코루틴(예: OnBecameInvisible())은 시작될 수 있었고, 이로 인해 컴포넌트 순서별 동작에 크래시가 발생했습니다.

Unity 2018.1에서는 게임 오브젝트가 비활성화되거나 삭제될 때 반환된 코루틴은 더 이상 시작되지 않습니다.

맨 위로 이동

BuildPipeline API가 이제 문자열 대신 BuildReport 오브젝트를 반환함

이전에 BuildPipeline API(예: BuildPipeline.BuildPlayer, BuildPipeline.BuildAssetBundles)는 문자열을 반환했습니다. 빌드가 성공하면 비어 있었고, 빌드가 실패하면 오류 메시지가 포함되어 있었습니다.

2018.1에서는 문자열이 새로운 BuildReport 오브젝트로 교체되었습니다. 이 오브젝트에는 빌드 프로세스에 관해 더욱 풍부한 정보가 들어 있습니다.

빌드가 성공했는지 검사하려면 보고 오브젝트의 summary 프로퍼티를 검색해서 가져온 후 해당 result 프로퍼티를 확인하십시오. 빌드가 성공한 경우 BuildResult.Succeeded입니다. 다음 예를 참조하십시오.

var report = BuildPipeline.BuildPlayer(...);

if (report.summary.result != BuildResult.Succeeded)
{
    throw new Exception("Build failed");
}

맨 위로 이동

플레이어 종료 알림이 메시지에서 이벤트로 변경됨

이전에는 Unity 스탠드얼론 플레이어가 종료될 때 MonoBehaviour에 대해 OnApplicationQuit 메서드를 호출하고, 플레이어 종료를 취소하려면 Application.CancelQuit를 호출했습니다.

이제 두 개의 새로운 이벤트, Application.wantsToQuitApplication.quitting이 도입되었습니다. Unity 스탠드얼론 플레이어가 종료될 때 이 이벤트를 수신하여 알림을 받을 수 있습니다. Application.wantsToQuit는 플레이어가 종료하려는 경우에 호출되며, wantsToQuit의 리스너는 true 또는 false를 반환해야 합니다. 플레이어 종료를 계속하려는 경우 true를 반환하고 종료를 취소하려는 경우 false를 반환합니다. Application.quitting 이벤트는 플레이어 종료가 확실하고 취소할 수 없는 경우에 호출됩니다.

Application.CancelQuit는 지원이 중단되었습니다. 대신에 Application.wantsToQuit를 사용하십시오.

using UnityEngine;

public class PlayerQuitExample

{

    static bool WantsToQuit()

    {

        // Do you want the editor to quit?

        return true;

    }

    static void Quit()

    {

        Debug.Log("Quitting the Player");

    }

    [RuntimeInitializeOnLoadMethod]

    static void RunOnStart()

    {

        Application.wantsToQuit += WantsToQuit;

        Application.quit += Quit;

    }

}

맨 위로 이동

.NET 플랫폼에서 AvatarBuilder.BuildHumanAvatar 지원 중단

이 변경 사항은 WSAPlayerX86, WSAPlayerX64 및 WSAPlayerARM 런타임 플랫폼에 영향을 미칩니다.

현재 대체 메서드는 제공되지 않습니다.

맨 위로 이동

TouchScreenKeyboard.wasCanceled와 TouchScreenKeyboard.done의 지원이 중단됨

쿼리를 통해 지원이 중단된 상태와 더 많은 상태를 포함하도록 새로운 TouchScreenKeyboard.status가 제공됩니다.

맨 위로 이동

MonoDevelop 5.9.6이 Unity 설치 프로그램에서 제거되고 Unity에서 지원이 중단됨

MonoDevelop 5.9.6은 macOS에서 Visual Studio for Mac으로 교체되었습니다. 이제는 macOS 설치 프로그램에서 번들 C# 스크립트 에디터로 사용됩니다. 현재 Visual Studio 2017 Community는 Windows에 Unity와 함께 설치되는 유일한 C# 스크립트 에디터입니다.

Unity 실행 파일 옆의 기본 위치에 설치되면 Unity는 MonoDevelop를 환경 설정에서 “MonoDevelop(빌트인)” 외부 스크립트 에디터로 인식하지 않습니다. C# 코드 에디터가 설치되지 않고 환경 설정에서 선택되지 않으면 Unity는 시스템 기본 애플리케이션을 사용하여 C#(.cs) 스크립트를 엽니다.

맨 위로 이동

이제 BuildPipeline 콜백 인터페이스가 BuildReport 오브젝트를 받음

BuildPipeline 콜백 인터페이스인 IPreprocessBuild, IPostprocessBuild, IProcessScene이 변경되어서 이제 BuildReport 오브젝트에 전달해야 합니다. 이는 이전의 빌드 경로/타겟 플랫폼용 파라미터를 대체합니다. 이 인터페이스를 구현하려면 코드를 변경해야 합니다.

빌드 경로와 타겟 플랫폼은 모두 BuildReport 오브젝트를 통해 액세스할 수 있습니다. 이제 빌드 경로는 report.summary.outputPath이고 타겟 플랫폼은 report.summary.platform입니다.

맨 위로 이동

플러그인 폴더에 있는 에셋은 특수 임포터를 통해 더 이상 임포트할 수 없음

이전에는 플러그인 폴더의 에셋(예: 확장자가 .bundle, .plugin 또는 .folder인 디렉토리)은 특수 임포터를 사용하여 임포트했습니다. 텍스처는 텍스처 임포터를 통해 임포트되고, 오디오 클립은 오디오 임포터를 통해 임포트되는 식이었습니다. 이제 이 모든 에셋은 기본 임포터를 통해 임포트됩니다. 즉, 해당 에셋에는 특수 타입(텍스처, 오디오 클립 등)이 없기 때문에 예전처럼 해당 에셋을 참조할 수 없습니다. 플러그인 폴더는 봉인된 패키지이므로 내부의 에셋을 외부에서 액세스하면 안 됩니다. 단, 플러그인 액세스 방식을 통하는 경우는 예외입니다.

해당 에셋을 계속 사용하려면 플러그인 폴더 밖으로 옮겨야 합니다.

맨 위로 이동

파티클 시스템 메시 파티클이 피벗 오프셋 값을 잘못 적용함

피벗 오프셋을 메시에 적용할 때 사용되는 수학 공식이 잘못되었으며, 빌보드 파티클에 대해 동작하는 방식과 일치하지 않았습니다. 올바른 스케일을 달성하려면 피벗 오프셋에 파티클 크기를 곱해야 합니다. 따라서 피벗 오프셋 1은 파티클의 전체 너비와 같습니다.

메시의 경우 크기를 두 번 곱했습니다. 즉, 피벗 양이 파티클 크기의 제곱에 비례했고, 이로 인해 다양한 크기의 파티클이 포함된 시스템에서 일관성 있는 결과를 얻을 수 없었습니다.

같은 크기의 파티클을 사용하는 시스템에서는 수식을 리버스 엔지니어링하여 조정할 피벗 오프셋 값을 결정함으로써 이러한 동작 변화를 보정할 수 있습니다.

예전 수식: offset = size * size * pivot

새로운 수식: offset = size * size * pivot

따라서 모든 파티클은 동일한 크기를 가집니다.

newOffset = pivot / size

파티클 간 크기가 다른 시스템에서는 문제가 되는 시스템을 육안으로 다시 평가해야 합니다.

맨 위로 이동

GPU 인스턴싱이 전역 조명을 지원함

2018.1부터 전역 조명(GI)이 Unity의 GPU 인스턴싱 렌더링에서 지원됩니다. 각 GPU 인스턴스는 다른 라이트 프로브 또는 하나의 라이트맵(아틀라스의 다른 영역) 또는 하나의 Light Probe Proxy Volume 컴포넌트(모든 인스턴스가 포함된 공간 볼륨을 위해 베이크됨)에서 비추는 GI를 지원할 수 있습니다. 스탠다드 셰이더와 표면 셰이더에는 이러한 변경 사항이 자동으로 함께 제공되지만, 이러한 기능을 활성화하려면 커스텀 셰이더 코드를 업데이트해야 합니다.

맨 위로 이동

핸들 드로우 및 크기 함수 기본값

UnityEditor.IMGUI.Controls 네임스페이스의 복잡한 핸들(예: BoxBoundsHandle, CapsuleBoundsHandle, SphereBoundsHandle, ArcHandle, JointAngularLimitHandle)에는 컨트롤 포인트의 형상을 변경하는 데 할당할 수 있는 델리게이트가 있습니다. 이전에는 이러한 델리게이트에 null 값을 할당하면 기본 동작으로 폴백되었습니다. 지금은 null 값을 할당해도 아무런 동작이 발생하지 않으며, 이로 인해 특정 컨트롤 핸들을 쉽게 비활성화할 수 있습니다. 이제 컨트롤 핸들을 기본 동작으로 초기화해야 하는 경우 각 클래스에는 기본 메서드용 공용 API 포인트가 포함됩니다.

맨 위로 이동

Unity 에디터에서 ‘안전하지 않은’ C# 코드를 컴파일하려면 옵션을 활성화해야 함

‘안전하지 않은’ C# 코드를 컴파일하려면 미리 정의된 어셈블리(예: Assembly-CSharp.dll)의 경우 플레이어 설정에서, 어셈블리 정의 파일 어셈블리의 경우 인스펙터에서 Allow ‘unsafe’ code 옵션을 활성화해야 합니다. 이 옵션을 활성화하면 Unity는 스크립트를 컴파일할 때 ‘안전하지 않은’ 옵션을 C# 컴파일러에 전달합니다.

맨 위로 이동

‘UnityPackageManager’ 디렉토리 이름이 ‘Packages’로 변경됨

2017.2 및 2017.3에서 Unity 패키지 관리자는 UnityPackageManager 디렉토리를 도입했습니다. 이 디렉토리는 manifest.json 파일을 저장하는 데 사용되었습니다. 패키지 콘텐츠는 Packages 로 시작하는 가상 상대 경로를 사용하여 스크립트에서 액세스할 수 있습니다.

2018.1에서는 패키징된 에셋의 가상 상대 경로와의 일관성을 위해 UnityPackageManager 디렉토리의 이름이 Packages 로 변경되었습니다. manifest.json 파일은 새 디렉토리로 자동으로 이동되어야 합니다.

그로 인한 결과는 다음과 같습니다.

  • 프로젝트가 Perforce, Git 등의 버전 관리 시스템(VCS)을 사용하는 경우 UnityPackageManager 디렉토리 대신에 Packages 디렉토리를 추적하도록 해당 설정을 업데이트해야 합니다.

  • 프로젝트가 Packages 디렉토리를 사용하도록 만드는 방식으로 Nuget(또는 기타 외부 패키지 관리자)을 사용하는 경우 다른 디렉토리를 사용하도록 해당 설정을 변경해야 합니다. 이렇게 하면 패키지가 Unity 패키지 관리자에서 선택되어 컴파일 오류, 임포트 오류 등 디버그하기 어려운 문제를 일으키는 상황을 피할 수 있습니다.

    • 다른 디렉토리를사용하여 해당 패키지를 저장하도록 Nuget을 설정하려면 공식 Microsoft 문서를 참조하십시오.
  • 새로운 디렉토리로 마이그레이션한 후 UnityPackageManager 디렉토리를 안전하게 삭제할 수 있습니다.

레거시 업그레이드 가이드
Unity 2017.3으로 업그레이드