유니티 5.5.0f3 릴리즈 노트 (개선 사항) – 번역
유니티 5.5.0f3 릴리즈 노트 (개선 사항) – 번역
– 원문 링크 –
개선사항 (Improvements)
- 안드로이드: 젤리빈(JellyBean) 및 키캣(KitKat) 장치에서 TLSv1.1 과 TLSv1.2를 사용할 수 있도록 개선했습니다.
- 안드로이드: big.LITTLE 코어 감지가 향상되었습니다. 이로 인해서 Parker에서 코어 탐지 문제가 수정되었습니다.
- 안드로이드: IL2CPP: 심볼(symbol) 및 디버깅 정보(Debug info)의 기본설정을 통해서 제거할 수 있도록 설정할 수 있습니다. 개발 빌드에서는 여전히 심볼(symbols)이 포함되기 때문에, 다소 큰 바이너리(binary)가 생성됩니다.
- 안드로이드: IL2CPP: IL2CPP 라이브러리의 전체 디버그 버전은 이제 Temp/StagingArea/Il2Cpp/Native에 저장됩니다.
- 안드로이드: 릴리즈 라이브러리의 심볼(symbol)은 이제 PlaybackEngines/AndroidPlayer/Variantions/*/Release/Symbols에서 확인할 수 있습니다.
- 애니메이션: 애니메이션 임포터에 ClipAnimationMaskType의 선택항목으로 “None”을 추가했습니다. 마스크(mask)의 사용이 필요없는 경우에 이 값을 사용하기 바랍니다.
- 애니메이션: 블렌드 트리(Blend Tree)의 리셋 기능이 구현되었습니다.
- 애니메이션: 아바타 임포트 개선: 계층구조가 적절하게 설정되지 않은 아바타 구성을 임포트 할 때 경고(warning)가 발생합니다. 임포트를 계속 진행하면 동작은 하지만 적절한 아바타 구성으로 설정을 업데이트하는 것이 좋습니다. 이 업데이트에는 기본 자동-매핑(auto-mapping)에 대한 기능도 개선되었습니다.
- 애니메이션: 애니메이션 클립 임포터(Clip Importer)에서 새로운 FBX 파일을 가져올 때 AvatarMask가 기본적으로 “None”으로 설정되도록 개선되었습니다.
- 빌드 파이프라인: 애셋번들(AssetBundles)이 이제 엔진 코드 stripping 처리과정과 함께 작동합니다. 커스텀 플레이어 빌드(custom player build)를 사용하면, 런타임에 사용자에 의해서 로드되는 애셋번들을 알수있고, 이를 통해서 엔진 코드 중에서 어떤 코드 부분이 애셋번들에 의해서 보존되어야 하는지 결정합니다. 이에 대한 자세한 내용은 BuildPipeline.BuildPlayer 메서드 변경을 참고하십시오.
- 빌드 파이프라인: 빌드 파이프라인이 최적화되어 씬 파일을 포함하는 애셋번들을 스크립트에서 매번 다시 컴파일할 필요가 없어졌습니다. 이로 인해서, 빌드 프로세스가 훨씬 빨라졌습니다.
- 캐시 서버: 캐시 서버에서 사용하는 node.js 버전을 0.12.7로 업그레이드 했습니다.
- 협업(Collaboration): 다양한 버그 수정 및 UI 개선
- 에디터: 계층 뷰의 씬 컨텍스트 메뉴(Scene Context Menu)에 ‘변경사항 취소(Discard Changes)’메뉴가 추가되었습니다. 이 메뉴를 선택하면 선택되고, 수정되었던 씬이 디스크에서 다시 로드됩니다.
- 에디터: Preferences 창의 높이를 조절할 수 있는 기능이 추가되었습니다.
- 에디터: Sorting Layer에 대한 실행취소(undo) 지원 기능이 추가되었습니다.
- 에디터: 메인 유니티 에디터 창의 타이틀 바에 유니티 버젼을 추가해서, 현재 열려있는 유니티의 버젼을 쉽게 확인할 수 있도록 했습니다.
- 에디터: Area Light가 적용되는 범위(effective range)를 인스펙터 뷰에서 표시하도록 기능을 개선했습니다.
- 에디터: ObjectFields에 보이는 것과 같이, EditorGUIUtility.ObjectContent는 텍스트 문자열에 타입 정보를 추가합니다. 예를 들어: “Concrete” 대신 “Concrete (Texture2D)”.
- 에디터: 씬 뷰에서 이제 hideInHierarchy flag를 가진 오브젝트는 와이어 프레임이 보이지 않도록 기능 개선되었습니다. 이전에는, 오브젝트의 부모가 선택되면, 와이어 프레임이 화면에 나타났습니다.
- 에디터: 이제 뷰(View)를 다른 뷰나 다른 창의 상단에 도킹(Docking)시킬 수 있습니다. 이전에는 왼쪽, 오른쪽, 아래쪽에 도킹하는 것만 가능했습니다.
- 에디터: 레티나 모니터에서 종횡비(aspect ratio)가 낮은 해상도를 에뮬레이트(테스트)할 수 있는 옵션이 게임 뷰에 추가되었습니다. 이 옵션은 Ratio/Resolution 메뉴 상단의 체크박스 형태로 제공됩니다. 이 업데이트는 현재 맥OS 전용으로 적용되었기 때문에, 레티나 지원은 맥OS에서만 사용가능합니다.
- 에디터:윈도우즈의 커맨드라인(Command line)에서 처리하는 동일한 방식으로, 유니티에서도 .exe 경로 내의 따옴표를 처리합니다.
- 에디터: 윈도우즈에서 실행되는 유니티 에디터는 프로젝트가 마지막으로 생성된 디렉토리를 기억했다가, 마지막으로 열린 프로젝트의 디렉토리가 아닌, 이 값을 기본 값으로 사용합니다.
- GI: 이제 MaterialPropertyBlocks가 실시간 GI 메타 패스 렌더링(Meta pass rendering)에 적용됩니다.
- 그래픽스: Line/Trail 렌더러에 텍스쳐 모드가 추가되어, 해당 텍스쳐가 반복(repeat)할지 늘어날지(stretches) 여부를 조절할 수 있습니다.
- 그래픽스: Graphics.DrawMeshInstanced 와 CommandBuffer.DrawMeshInstanced API가 추가되어, 수천 개의 렌더러를 생성하면서 발생하는 오버헤드(overhead)없이, 즉시 화면을 렌더링할 수 있습니다.
- 그래픽스: 밉맵 생성을 수동으로 제어할 수 있도록 RenderTexture.GenerateMips 스크립트 API가 추가되었습니다.
- 그래픽스: instancing_option 명령어의 “lodfade” 옵션을 사용해서, 서로 다른 LOD 페이드 값(fade value)을 갖는 렌더러를 한데 묶어서 배치(Batch)할 수 있도록 기능이 추가되었습니다.
- 그래픽스: 라이트에 연결된 커맨드 버퍼(Command Buffer)가 인스펙터 뷰에서 시각화되며, 버퍼를 각각 또는 모두 제거할 수 있는 버튼이 추가되었습니다.
- 그래픽스: GPU 인스턴싱(GPU Instancing): OpenGL ES 3.0 이상의 버전을 사용하는 안드로이드와 Metal을 사용하는 iOS/맥OS에 대한 GPU 인스턴싱 지원(support) 기능이 추가되었습니다. GLES 3.0 Adreno GPU를 사용하는 안드로이드 장치는 인스턴싱이 비활성화됩니다.
- 그래픽스: GPU 인스턴싱(GPU Instancing): 스피드 트리(SpeedTree) 인스턴싱이 구현되었습니다. 라이트 프로브에서는 아직 허용되지 않습니다.
- 그래픽스: 대형 게임 월드에 대한 그림자 정밀도가 향상되었습니다. reverse-float 버퍼를 사용해서 최신 GPU의 깊이 버퍼(depth buffer) 정밀도를 향상시킬 수 있습니다. 특히 먼 거리에서의 디렉셔널 라이트(Directional Light)에 의한 그림자의 정밀도를 향상시킵니다.
- 그래픽스: 에디터 상에서 그래픽 에뮬레이션이 향상되었습니다:
– 금속 설정이 추가되어, iOS/tvOS에서 기본설정으로 사용됩니다. (이전에 사용되었던 GLES2.0 설정 대신)
– OpenGL 3.0 설정이 추가되어, 안드로이드에서 기본설정으로 사용됩니다. (이전에 사용되었던 GLES2.0 설정 대신)
– WebGL 1과 WebGL 2 설정이 추가되었습니다: WebGL에서 WebGL 1이 기본설정으로 사용됩니다. (이전에 사용되었던 GLES2.0 설정 대신)
– 쉐이더 모델 4 설정이 추가되어, 스탠드얼론(Standalone)/윈도우즈 스토어에서 사용가능합니다.
- 그래픽스: Line/Trail 렌더러에서 모서리와 그라데이션(gradient)처리 기능이 향상되었습니다.
- 그래픽스: LODGroup 컴포넌트 UI가 향상되었습니다:
– 슬라이딩 카메라 아이콘이 이제 글로벌 LOD 바이어스(Global LOD bias) 값을 인식하고, 그에 따라서 동작합니다.
– “Recalculate Bounds” 버튼이 활성화되어, 이 버튼을 클릭하면 Bounds를 다시 계산해서 변경됩니다.
- 그래픽스: Metal(iOS/맥OS)은 이제 3D 및 2D배열 텍스쳐의 조각으로 렌더링 가능합니다.
- 그래픽스: Metal: 쉐이더 백엔드(shader backend)를 HLSLcc로 바꿨습니다. HLSLcc는 OpenGL 코어와 ES3.0에서 사용되는 것과 동일한 컴파일러 입니다. 이제 인스턴싱이 가능해졌고, 곧 Metal에서 쉐이더를 계산하도록 기능 개선할 예정입니다.
- 그래픽스: 멀티-씬 오클루젼 컬링(Multi-Scene Occlusion culling)이 정상적으로 동작합니다. 컬링 데이터가 별도의 애셋으로 추출되었고, 멀티-씬 설정을 적용해서 굽거나(bake) 다시로드될 수 있습니다. 컬링 데이터는 현재 활성화된 씬을 기준으로 저장되며, 이를 참조하는 모든 씬 또는 씬 그룹에서 정상적으로 로드할 수 있습니다.
- 그래픽스: 이제 플레이 모드를 종료하면, Shader.globalMaximumLOD가 복원됩니다.
- 그래픽스: 정적 배치 렌더링(Static Batch Rendering)이 더 빨라졌고, 대부분의 경우에서 드로우 콜(Draw Call)이 감소했습니다.
- IL2CPP: 많은 C# Attribute를 사용하는 프로젝트에 대한 빌드 시간과 바이너리(binary) 크기를 감소시켰습니다.
- IMGUI: Event.Use() 함수에서, 이벤트 타입이 Repaint 이거나 Layout인 경우에 경고(warning)를 기록하도록 기능이 개선되었습니다.
- iOS: 사용자가 게임 센터 인증 오류 문자열을 검색할 수 있는 방법을 추가했습니다.
- iOS: Trampoline 코드를 통해서 iOS 키보드의 이모티콘 필터링을 비활성화시킬 수 있는 옵션이 추가되었습니다.
- iOS: iOS 플랫폼에서 발생했던 audio ducking 문제를 수정했습니다. (백그라운드 오디오 어플리케이션 음소거 문제)
- iOS/tvOS: 관련 폴더에 플러그인을 빌드할때 이제 상대적인 심볼릭링크(relative symlink)가 사용됩니다. 이전에는 절대 심볼릭 링크(absolute symlink)만 사용되었습니다.
- iOS/tvOS: 정적 라이브러리의 크기가 크게 줄었습니다.
- 오클루전 컬링: 이제 유니티에서 멀티-씬 오클루전 컬링을 지원합니다. 동시에 빌드된 씬이 이제 기대하는 대로(정상적으로) 계산됩니다.
- OSX/iOS Metal: OSX/iOS에서 Metal 렌더링을 강제하는 -force-metal 스위치가 추가되었습니다.
- 파티클: 파티클 시스템 UI에”Show Bounds” 옵션이 추가되었습니다. 이 옵션은 시스템의 월드와 로컬 AABB 를 보여줍니다.
- 파티클: 눈높이에 맞추는 파티클 빌보드(billboard)를 생성하기 위한 새로운 렌더링 모드가 추가되었습니다. 이 모드는 VR 렌더링에 효과적입니다.
- 파티클: 파티클 입자의 초기 이동 방향을 회전시킬 수 있는 새로운 Shape Module 옵션이 추가되었습니다.
- 파티클: 이제 블렌딩이 수행되지 않는 고정 색상 모드에서 Gradient를 지원합니다. 이 기능은 사용자가 선택할 수 있는 색상 목록을 정의하려는 경우에 유용합니다.
- 파티클: Gravity Modifier 항목에서 시간에 따라 커브형태로 값을 설정할 수 있습니다.
- 파티클: 파티클 시스템의 커브 에디터가 향상되어, wrap 모드를 지원하고, 키의 선택 및 편집이 가능하도록 기능이 개선되었습니다.
- 피직스(Physics): 피직스 프로파일러에 더 많은 성능 metric을 추가했습니다.
- 피직스(Physics): 모든 Effector의 인스펙터 창에서 속성을 그룹으로 묶기 위해서 애니메이션이 들어간 롤아웃(roll-out, 화살표 모양의 접는 메뉴)메뉴를 사용합니다.
- 피직스(Physics): Physics.queriesHitBackfaces API가 공개되었습니다. 이 기능은 기본적으로 비활성화 되어 있기때문에, 모든 피직스 쿼리(query)는 후면 삼각면(backface triangles)에 대한 충돌은 감지하지 않습니다. 이전에는 일정하지 않은 방식으로, 어떤 쿼리에서는 충돌이 감지되고, 어떤 쿼리에서는 충돌이 감지되지 않는 식으로 동작했습니다.
- 피직스(Physics): 피직스 엔진이 PhysX 3.3.1 에서 PhysX 3.3.3으로 업데이트 되었습니다.
- 피직스(Physics): 이제 Physics2D 설정에 옵션이 추가되어, Collider2D AABB를 기즈모 롤아웃(roll-out, 접는 메뉴)메뉴에 표시할 수 있습니다.
- 피직스(Physics): Rigidbody2D와 Collider2D의 인스펙터 창에 “Info” 롤아웃(roll-out, 접는 메뉴)메뉴가 추가되어, 이 메뉴를 통해서 유용한 정보를 보여줍니다.
- 피직스(Physics): 이제 Rigidbody2D에서 PhysicsMaterial2D를 허용합니다. 이렇게 설정된 PhysicsMaterial2D는 따로 PhysicsMaterial2D를 설정하지 않고, Rigidbody2D에 연결된 모든 Collider2D에 사용됩니다.
- 플러그인: “Any Platform”을 선택하면, 특정 플랫폼을 제외할 수 있습니다. 이를 통해서 선택한 특정 플랫폼을 제외한 모든 플랫폼에서 플러그인 호환성을 설정할 수 있습니다. PluginImporter에 API가 추가되었습니다.
- 삼성 TV: 한번에 여러 삼성 TV에 배포할 수 있는 지원 기능이 추가되었습니다. 이 기능을 사용하려면, 각 TV를 슬래시(/)로 TV IP를 구분해야 합니다.
- 스크립팅: 이제 EditorJsonUtility는 UnityEngine.Object 타입 뿐만 아니라, 모든 object 타입이 전달되어 직렬화에 사용될 수 있습니다. 이것은 vanilla C# 타입이 오브젝트 참조 직렬화 동작(object reference serialization behaviour)의 이점을 활용할 수 있다는 의미입니다.
- 스크립팅: System.IO.StringReader.ReadLine의 성능이 향상되었습니다.
- 스크립팅: 이제 JsonUtility.ToJson의 속도가 더 빨라졌고, 더 작은양의 임시 메모리를 사용하도록 기능이 개선되었습니다.
- 스크립팅: 맥OS에서, 배치 모드(batch mode) 시에 Null Exception이 발생했을 때, 유니티 에디터가 더이상 버그 리포터(BugReporter)를 띄우지 않습니다.
- 스크립팅: C# 컴파일러는 모노 4.4로 업그레이드 했습니다. 새로운 컴파일러는 여전히 C#4 및 .NET 3.5를 타겟으로 하지만, 더 나은 성능을 제공하고 많은 버그가 수정되었습니다.
- 직렬화(Serialization): 새로운 스크립팅 클래스 어트리뷰트(attribute)인 ‘PreferBinarySerialization’이 추가되었습니다. 이를 통해서, 프로젝트의 애셋 직렬화 모드(asset serialization mode)에 관계없이, 개발자가 유니티에 정보를 전달해서, ScriptableObject에서 파생된 타입에서 바이너리 직렬화를 사용하도록 할 수 있습니다.
- 직렬화(Serialization): 직렬화 깊이 한계에 대한 경고에서, 해당 경고를 발생시킨 직렬화 계층에 대한 정보를 출력합니다.
- 서비스: 게임 성능 서비스(Game Performance Service): 에디터의 플레이 모드에서 예외(Exception)가 발생하지 않도록하는 옵션이 추가되었습니다.
- 쉐이더: 재질(Material) UI에 렌더 큐(Render Queue) 설정이 추가되었습니다. 이전에는 이 기능이 스크립트 전용이었습니다.
- 쉐이더: Direct3D 9을 사용할때 발생했던 다양한 종류의 반-픽셀(half-pixel) 오프셋 문제가 수정되었습니다. 이제 렌더링 결과가 다른 플랫폼(DX11, OpenGL 등)과 정확하게 일치합니다.
- 쉐이더: ComputeShader 생성자에 잘못된 매개변수를 전달할 때 발생하는 예외 메시지가 개선되었습니다.
- 쉐이더: 여러 API를 위해서 컴파일된 대형 쉐이더의 메모리 사용량이 개선되었습니다. 플레이어에서 현재 활성화된 API의 데이터만 압축이 해제됩니다.
- 쉐이더: 쉐이더용 “Show compiled code”의 사용성이 향상되었습니다. 이제 컴파일된 쉐이더에서 변형된 쉐이더가 유용한 방식으로 같이 그룹화됩니다.
- 쉐이더: 허용되는 쉐이더 키워드의 수를 256개까지 늘렸습니다 (기존의 128에서). 관련된 부분의 코드 최적화를 통해서 실제로 더 빨라졌습니다.
- 쉐이더: UnityStandardBRDF.cginc에서 변수의 이름을 변경하고 코드를 정리했습니다. 자세한 사항은 5.5 업그레이드 가이드를 참고하시기 바랍니다.
- 쉐이더: 이제 쉐이더가 유니티 플레이어에서 완전히 바이너리 형태로 추출됩니다. 따라서 런타임에는 쉐이더 텍스트 문자열이 없고 구문 분석이 수행되지 않습니다.
- 쉐이더: 쉐이더 컴파일에 실패했는데 그 이유를 모르는 경우, 플랫폼 쉐이더 컴파일러의 오류 출력 정보가 오류 메시지에 표시됩니다.
- 지형(Terrain): 지형 LOD 사전-계산(pre-computation)이 최적화되어 더 빨라졌습니다 (특히, TerrainData.SetHeights와 Size 속성을 설정하는 것이 더 빨라졌습니다).
- Unity Ads: Unity Ads를 v2.0.5로 업데이트 했습니다. 유니티의 메인 쓰레드 외부에서 사용자 지정 콜백을 호출하는 것과 관련된 문제를 수정했습니다.
- 버전 관리(Version Control): 메모리와 CPU사용량이 크게 개선되었습니다.
- Visual Studio: “Opening Visual Studio” 진행 창에 취소 버튼이 추가되었습니다.
- Visual Studio: 더이상 COM이 Visual Studio를 실행시키는데 사용되지 않습니다. 이를 통해서 Visual Studio를 실행시키는데 걸리는 시간이 빨라졌습니다.
- VR: GUI 요소가 단일-패스(Single-pass) 스테레오 렌더링과 같이 동작할 수 있도록 개선되었습니다.
- VR: UnityEngine.VR.InputTracking.GetLocalRotation() 과 UnityEngine.VR.InputTracking.GetLocalPosition()를 사용해서, 오큘러스 터치와 HTC Vive 컨트롤러의 위치와 방향(회전)값을 요청할 수 있습니다.
- VR: VR 장치에 대한 네이티브 플러그인 지원이 업데이트 되었습니다. 사용자 프로젝트의 플러그인이 사용되면 네이티브 VR 플러그인을 오버라이드(override) 합니다.
- WebGL: Gzip 대신 Brotli 압축을 사용하는 옵션을 추가했습니다.
- WebGL: 코드를 변경하지 않는 리빌드(Rebuild)는 캐시에 저장된 전체 JS 빌드를 사용하므로, 반복 처리하는데 걸리는 시간이 매우 빨라졌습니다.
- WebGL: 중복되는 함수를 제거해서 릴리즈 빌드의 크기를 줄였습니다.
- WebGL: 이제 새 프로젝트에서 WebGL 2.0이 기본 사용됩니다.
- 윈도우즈 스탠드얼론(Windows Standalone): 빌드 설정 창(Build Settings)에 “Copy PDB files” 옵션이 추가되었습니다. PDB파일은 크지만, 프로파일링과 크래시 디버깅에 매우 유용합니다.
- 윈도우즈 스탠드얼론(Windows Standalone): 이제 윈도우즈 스탠드얼론 프로그램이 low integrity mode 에서 정상적으로 실행될 수 있습니다.
- 윈도우즈 스토어: 빌드 설정창(Build Settings)에 “Copy References” 옵션이 추가되었습니다. 이 옵션을 사용하면, 생성된 솔루션이 추출한 폴더로 유니티 파일을 복사하는 대신, 유니티 설치 폴더에서 해당 파일을 참조할 수 있습니다. 이를 통해서 최대 10GB의 디스크 공간을 절약할 수 있습니다. 유니티 설치 폴더에 대한 의존성 때문에, 추출한 폴더를 다른 PC에 복사할 수 없다는 점을 주의하시기 바랍니다.
- 윈도우즈 스토어: XAML 기반 프로그램에서 입력 처리를 위한 새로운 옵션이 추가되었습니다: 이제 SwapChainPanel에서 포인터 입력을 받을 수 있습니다. 이 옵션은 독립 입력 소스를 대체할 수 있는 대안입니다.
- 윈도우즈 스토어: 일부 하드웨어 커서 지원을 추가했습니다. PlayerSettings에서 설정된 기본 커서는 하드웨어 커서처럼 동작합니다. 커서는 런타임에서도 하드웨어 커서처럼 동작합니다. 이에 대한 더 자세한 정보는 Cursor 문서를 참고하시기 바랍니다.
- 윈도우즈 스토어: “target device type”이라는 컨셉을 추가했습니다. 이 컨셉을 통해서 하나의 장치 제품군(PC, 모바일 HoloLens 등)만을 타겟으로 허용할 수 있습니다. 이를 통해서 특정 장치 타입에 대한 자원 최적화가 가능합니다. 더 자세한 정보는 EditorUserBuildSettings.wsaSubtarget 문서를 참고하시기 바랍니다.
- 윈도우즈 스토어: 이제 어셈블리 C# 프로젝트가 GeneratedProjects 폴더의 메인 솔루션 옆에 생성됩니다.
- 윈도우즈 스토어: UnityEngine.WSA.Cursor.SetCustomCursor를 확장했습니다. 이 함수에 0을 전달하면, 커서가 화살표 아이콘으로 복원됩니다.
- 윈도우즈 스토어: UWP에서 TouchScreenKeyboard를 새로 구현했습니다. 이제 IME 입력뿐만 아니라 XAML 및 D3D 프로그램도 지원됩니다. 이전 구현을 사용하려면 커맨드 라인에서 -forceTextBoxBasedKeyboard를 전달합니다.
- 윈도우즈 스토어: 유니티 에디터가 윈도우즈에서 실행되지 않으면, 이제 더이상 윈도우즈 스토어 플랫폼이 빌드 설정창(Build Settings)에서 나타나지 않습니다.
번역해주셔서 정말감사합니다. 좋은 참고가 되었습니다. ㅎㅎ
감사합니다. 블로그에 자주 들러주세요~