Unity 개발을 위한 최고의 IDE로서 Rider의 입지를 확고히 하는 Rider 2023.1을 만나보세요. 우리는 그 많은 기능(어떤 경우에는 매우 오랫동안 기다려온 기능)을 살펴보고 이러한 기능이 어떻게 개발을 단순화하고 개발자가 더 훌륭하고 효율적인 게임을 만들 수 있도록 지원하는지 알아볼 것입니다.
안녕하세요 여러분, 제 이름은 Denis Kondratev이고 MY.GAMES의 Unity 개발자입니다. 제 생각에는 JetBrains의 IDE인 Rider가 오랫동안 Unity 개발을 위한 최고의 IDE로 자리매김해 왔습니다. 또한 최근 Rider 2023.1 릴리스에서는 개발자의 삶을 더욱 편리하게 만들어주는 많은 새로운 기능이 추가되었습니다. JetBrains는 다시 한 번 높은 기준을 세우고 있으며 실망하지 않았습니다.
이 새 버전을 사용하면 USB 케이블을 통해 Android 장치에서 실행되는 게임을 디버깅할 수 있습니다. 일반적으로 연결된 플레이어에 대한 임시 실행 구성을 자동으로 생성하고 후속 세션을 최적화하며 다양한 플랫폼에서 쉽게 저장하고 팀과 공유할 수 있도록 하여 디버깅을 단순화합니다. 그러나 일부 개발자의 또 다른 중요한 기능은 IDE 자체 내에서 바로 현지화된 문서를 지원하는 것입니다.
이제 마침내 UI 도구 키트에 대해 더 깊이 알아보고 탐색할 시간입니다.
Rider는 UI 툴킷을 기반으로 하는 Unity 편집기용 UI 확장용 템플릿 3개를 추가했습니다.
Rider 2023.1에는 [SerializeReference] 속성으로 필드 식별, Unity 애니메이션에서 C# 사용 찾기(아주 누락됨), [Header] 속성 형식 지정 기능이 개선되었습니다.
일반적으로 C# 작업을 위해 많은 개선 사항이 추가되었습니다. 그리고 마지막으로 가장 좋은 점은 오랫동안 기다려온 JetBrains의 DOTS 지원입니다.
이제 간략하게 검토하고 최신 버전의 Rider로 업그레이드할 가치가 있는지 살펴보겠습니다. 아직 이 IDE를 사용해 본 적이 없다면 이 문서가 도움이 될 것입니다.
Unity 편집기에서는 게임이 완벽하게 작동하더라도 실제 장치에서는 원활하게 진행되지 않는 경우가 있습니다. 이제 Rider를 사용하면 USB를 통해 장치에서 직접 코드를 디버그할 수 있습니다. 이는 매우 고무적인 일입니다.
이 기능이 작동하려면 개발 빌드 및 스크립트 디버깅 옵션이 활성화된 상태에서 빌드를 컴파일해야 한다는 점을 기억하는 것이 중요합니다.
또한 장치 자체도 올바르게 설정해야 하며, 우선 장치에서 개발자 모드를 활성화해야 한다는 점을 상기시켜 드리고 싶습니다.
또한 "빌드 번호" 항목을 찾는 또 다른 간단한 방법은 설정에서 검색하는 것입니다.
다음으로 나타나는 "개발자 옵션" 메뉴에서 "USB 디버깅"을 활성화합니다.
몇 가지 추가 단계: 장치에서 게임을 실행하고 Rider의 메인 메뉴에서 "실행"을 클릭한 다음 "Unity 프로세스에 연결..."을 클릭합니다. 열린 창에서 애플리케이션이 설치된 Android 기기를 선택합니다.
다 준비 됐어! 장치에서 직접 중단점을 설정하고 게임을 디버그할 수 있습니다! 주저하지 말고 이 강력한 디버깅 도구를 활용하여 게임 개발 프로세스를 강화하세요.
또 다른 참고 사항: 처음으로 디버깅을 시작하자마자 Rider는 Android 플레이어에 대한 임시 실행 구성을 자동으로 생성합니다. 나중에 사용할 수 있도록 실행 구성을 저장하려면 그렇게 하고 팀과 공유할 수 있습니다.
물론, 우리 모두는 오래되고 좋은(그리고 동시에 유연성이 매우 떨어지는) IMGUI에 매우 익숙합니다. 그러나 Unity 팀은 게임 UI 제작 경험을 개선하기 위해 오랫동안 새로운 UI 툴킷 패키지를 개발해 왔습니다. Unity 2022.2부터는 에디터에서 UI를 생성할 때 새로운 접근 방식을 사용하는 것이 좋습니다.
UI 툴킷은 별도의 심층 주제입니다. 나는 새로운 접근 방식이 UI 생성에 대한 더 편리하고 어느 정도 더 일반적인 접근 방식을 제공한다고만 말씀드리겠습니다. HTML과 CSS에 대한 경험이 있다면 적응하기가 매우 쉬울 것입니다. 그러나 그것이 없더라도 나는 다른 사람들에게 UI 툴킷을 익히는 데 지체하지 말라고 조언하고 싶습니다.
이제 Unity 2022.2 이하 프로젝트의 경우 Rider가 기본적으로 새 템플릿 사용을 제공합니다. 그 중 하나를 시도해 보겠습니다. 이를 위해 먼저 게임의 항목을 설명하는 간단한 ScriptableObject를 만듭니다.
[CreateAssetMenu(fileName = "GameItem", menuName = "Game Item", order = 0)] public class GameItem : ScriptableObject { public string itemName; public int weight; public int price; }
이 ScriptableObject에 대한 사용자 정의 편집기를 만들어 보겠습니다. 이렇게 하려면 Rider에서 Editor 폴더를 마우스 오른쪽 버튼으로 클릭한 다음 추가를 클릭하고 Unity Script를 선택하세요.
열린 창에서 사용자 정의 편집기를 선택하십시오. 편집기 이름을 GameItemEditor로 지정하겠습니다.
CustomEditor 속성에서 생성된 편집기가 GameItem 클래스용임을 나타냅니다.
using UnityEditor; using UnityEngine.UIElements; [CustomEditor(typeof(GameItem))] public class GameItemEditor : Editor { public override VisualElement CreateInspectorGUI() { return base.CreateInspectorGUI(); } }
이제 Window -> UI Toolkit -> UI Builder를 엽니다. 뷰포트에서 현재 UI 문서를 저장하고 이름을 GameItem.uxml로 지정합니다. 라이브러리 창에서 GameItem 클래스 필드에 해당하는 세 개의 필드를 추가하고 적절한 이름을 지정합니다.
UI Toolkit을 사용하면 몇 가지 분명한 이점이 있습니다. UXML 문서를 그래픽으로 편집하는 기능은 UI Builder를 통해 즉시 사용할 수 있을 뿐만 아니라 프로그래밍을 통한 편집도 가능합니다. 이는 IGMUI와 다소 유사합니다. 이제 UI 표시 스타일을 USS(본질적으로 CSS와 유사)에서 설정한 다음 프로젝트에서 재사용할 수 있습니다. 아, 이게 어떻게 없어졌지! 자동 실행 취소 지원도 제공됩니다.
또 다른 주목할만한 기능은 자동 데이터 바인딩입니다. 바인딩 경로 필드에 GameItem 클래스 필드의 이름을 표시해 보겠습니다.
뷰포트 창의 파일 -> 다른 이름으로 저장... 메뉴를 사용하여 문서를 저장하는 것을 잊지 마십시오. (여기서는 저장 단축키인 Ctrl-S / Cmd-S가 도움이 되지 않습니다.)
대략 다음 내용으로 구성된 UXML 문서를 얻어야 합니다.
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" editor-extension-mode="False"> <ui:TextField picking-mode="Ignore" label="Name" name="Name" binding-path="itemName" /> <ui:IntegerField label="Weight" value="0" name="Weight" binding-path="weight" readonly="false" /> <ui:IntegerField label="Price" value="0" name="Price" binding-path="price" focusable="true" /> </ui:UXML>
이제 UXML 문서에서 직접 검사기를 구성하도록 GameItemEditor 작성을 마치겠습니다.
[CustomEditor(typeof(GameItem))] public class GameItemEditor : Editor { public VisualTreeAsset treeAsset; public override VisualElement CreateInspectorGUI() { var inspector = new VisualElement(); treeAsset.CloneTree(inspector); return inspector; } }
프로젝트 창에서 GameItemEditor 스크립트를 선택하고 생성된 UI 문서 GameItem.uxml을 트리 자산 필드에 드래그하여 지정하세요.
GameItem 클래스에 대한 사용자 정의 편집기가 준비되었습니다. UI 문서로 약간의 실험을 하고 해당 변경 사항이 검사기의 표시에 어떤 영향을 미치는지 확인할 수 있습니다.
새로운 Rider 2023.1의 출시는 UI 툴킷에 대한 연구를 자세히 알아보고 UI 툴킷이 제공하는 모든 이점을 이해하기에 충분한 이유가 됩니다!
Unity의 데이터 지향 기술 스택(DOTS)은 Unity 팀이 수년 동안 개발해 온 프로젝트입니다. 업데이트 없이 거의 1년이 지난 후 DOTS 패키지는 실험적 상태에서 시험판 상태로 전환되어 버전 1.0.0을 얻었습니다. (이 글을 쓰는 시점에서는 1.0.0-pre.65 입니다. 그리고 2023년 출시 약속이 있습니다.)
오랜 개발 시간과 일부 사람들이 DOTS에 대해 갖고 있는 의구심에도 불구하고 출시를 기다리는 것을 포기했음에도 불구하고 새로운 스택은 여전히 그 기능과 성능에 놀라움을 금치 못합니다.
데이터 지향 설계, 즉 일반적으로 ECS(엔티티 구성 요소 시스템)는 게임 프로그래밍 아키텍처에 대해 완전히 다른 접근 방식을 제공합니다. 익숙한 객체 지향 프로그래밍 패턴과 달리 여기서는 데이터와 처리를 분리하는 데 중점을 둡니다. 이러한 종류의 아키텍처에서는 유사한 데이터가 일반적으로 메모리에서 서로 가까이 위치하며 시스템이 이를 놀라운 속도로 처리할 수 있도록 해줍니다. 특히 멀티스레드 모드에서 이 작업이 수행될 수 있는 경우 더욱 그렇습니다.
DOTS에서는 C#에서 직접 편리하게 사용할 수 있도록 기본 메모리 관리 메커니즘이 추가되어 엄청난 양의 작업이 수행되었습니다.
DOTS 1.0.0이 출시되면서 애플리케이션 개발에 대한 많은 접근 방식이 바뀌었고 제 생각에는 더욱 편리하고 직관적이 되었습니다.
아직 좋은 문서가 부족하기는 하지만 놀랍도록 생산적인 DOTS의 세계에 뛰어들고 ECS 및 멀티스레드 데이터 처리를 위해 머리를 다시 연결하기에는 충분합니다.
저는 이전에 Unity DOTS 1.0의 중력 시뮬레이션을 사용하여 중력 시뮬레이션에 대한 기사를 발표했습니다. 원한다면 이 스택을 연구하기 위한 다른 많은 교육 자료도 찾을 수 있습니다. Rider의 새로운 기능을 테스트하기 위해 이전 버전의 DOTS로 작성된 이전 Wave Propagation 프로젝트를 열었습니다.
항상 저를 짜증나게 했던 것은 코드 작성의 세부 사항으로 인해 Rider 또는 Visual Studio에서 발행된 많은 경고였습니다. 이제 코드가 깨끗하고 보기 좋아 보입니다.
마지막으로! 내가 이것을 얼마나 기다려왔는가! Rider는 공식적으로 DOTS를 지원하므로 의심할 여지 없이 Unity 개발을 위한 최고의 IDE입니다. 이제 Rider는 무엇이 옳고 무엇이 아닌지를 진정으로 이해하게 되었습니다.
예를 들어, 다음 코드에서는:
public partial struct TransformingSystem : ISystem { [BurstCompile] public void OnUpdate(ref SystemState state) { var field = SystemAPI.GetSingleton<Field>(); var job = new TransformingJon { HeightScale = field.CellHeightScale, DeltaTime = SystemAPI.Time.fixedDeltaTime, FieldViscosity = field.Viscosity, MinHeight = field.MinHeight }; job.ScheduleParallel(); } }
Rider는 이제 싱글톤 필드에 대한 올바른 액세스를 위해 OnCreate()가 state.RequireForUpdate<Field>() 메서드를 통해 기대치를 설정해야 한다고 제안했습니다.
public partial struct TransformingSystem : ISystem { public void OnCreate(ref SystemState state) { state.RequireForUpdate<Field>(); } [BurstCompile] public void OnUpdate(ref SystemState state) { var field = SystemAPI.GetSingleton<Field>(); var job = new TransformingJon { HeightScale = field.CellHeightScale, DeltaTime = SystemAPI.Time.fixedDeltaTime, FieldViscosity = field.Viscosity, MinHeight = field.MinHeight }; job.ScheduleParallel(); } }
또한 MonoBehaviors용 베이커를 생성하기 위한 템플릿이 나타났으며 새 구성 요소를 만들거나 기존 구성 요소에 필드를 추가할 수 있는 기능이 제공됩니다.
물론 아직 모든 것이 완벽하지는 않습니다. 베이커 코드를 생성할 때 오래된 템플릿이 사용됩니다. 이 코드를 얻었습니다.
public class FieldAuthoring : MonoBehaviour { public GameObject CellPrefab; public Field Field; public Impulse Impulse; public class FieldAuthoringBaker : Baker<FieldAuthoring> { public override void Bake(FieldAuthoring authoring) { AddComponent(new FieldComponentData { CellPrefab = GetEntity(authoring.CellPrefab), Field = authoring.Field, Impulse = authoring.Impulse }); } } } public struct FieldComponentData : IComponentData { public Entity CellPrefab; public Field Field; public Impulse Impulse; }
여기서는 이미 오래된 메서드 GetEntity() 및 AddComponent()가 사용됩니다. 대신 이제 다음과 같은 방식으로 구성 요소를 추가해야 합니다.
public override void Bake(FieldAuthoring authoring) { var entity = GetEntity(TransformUsageFlags.Dynamic); AddComponent(entity, new FieldComponentData { CellPrefab = GetEntity(authoring.CellPrefab, TransformUsageFlags.Dynamic), Field = authoring.Field, Impulse = authoring.Impulse }); }
물론 템플릿을 직접 변경할 수도 있습니다. 하지만 JetBrains의 수정 사항이 도착하는 데 그리 오랜 시간이 걸리지 않을 것으로 생각됩니다. 구성 요소에 대한 베이커를 사용하여 승인된 MonoBehaviour를 생성할 가능성도 있습니다. JetBrains 블로그에서 DOTS 작업 시 새로운 기능을 광범위하게 설명하는 기사를 이미 찾을 수 있으므로 여기서는 이에 대해 설명할 필요가 없습니다.
Rider 2023.1의 출시는 Unity 개발자를 위한 다양한 새로운 기능과 개선 사항을 제공하여 Unity 개발을 위한 최고의 IDE로서의 입지를 확고히 했습니다. Android 장치에 대한 향상된 디버깅, UI 툴킷을 위한 새로운 템플릿, 오랫동안 기다려온 DOTS 지원, Unity 레지스트리 패키지 및 현지화된 API 문서에 대한 온라인 문서에 대한 빠른 액세스와 같은 추가 기능을 통해 JetBrains는 계속해서 게임 개발 도구의 기준을 높이고 있습니다. 이러한 기능은 개발 프로세스를 단순화할 뿐만 아니라 개발자가 더 훌륭하고 효율적인 게임을 만들 수 있도록 지원합니다.
또한 Rider 2023.1은 코드에서 직렬화된 필드를 보다 정확하게 감지하고, Unity 애니메이션에서 C#을 찾는 데 대한 향상된 지원, [Header] 속성을 별도의 줄에 배치하기 위한 서식 지정 엔진에 대한 요청이 많았던 업데이트 등 여러 가지 다른 업데이트를 제공합니다. 이러한 향상된 기능은 더욱 간소화되고 효율적인 개발 환경에 기여합니다.
숙련된 Unity 개발자이든 이제 막 시작하는 개발자이든 관계없이 Rider 2023.1 릴리스는 살펴볼 가치가 있습니다. 새로운 기능은 다양한 요구 사항을 충족하고 개발 프로세스를 간소화하는 데 도움이 됩니다. 이전에 Rider를 사용해 본 적이 없다면 이번 릴리스는 Rider의 강력한 기능을 직접 경험할 수 있는 훌륭한 기회를 제공합니다. 이미 Rider를 사용하고 있는 경우 최신 버전으로 업그레이드하면 게임 개발 워크플로우가 확실히 향상될 것입니다.
Rider 2023.1을 통해 Unity 개발의 최신 기술을 활용하고 게임 프로젝트를 새로운 차원으로 끌어올리세요. 개발 경험을 개선하고 더욱 매력적인 고성능 게임을 만들 수 있는 기회를 놓치지 마세요.