Đối với tôi, Rider từ JetBrains từ lâu đã được coi là IDE tốt nhất để phát triển Unity. Trong bản phát hành Rider 2023.1 gần đây, nhiều tính năng mới đã được thêm vào giúp cuộc sống của các nhà phát triển trở nên dễ dàng hơn. JetBrains một lần nữa không gây thất vọng và tiếp tục đặt tiêu chuẩn cao.
Phiên bản mới cho phép gỡ lỗi trò chơi chạy trên thiết bị Android thông qua cáp USB. Nói chung, nó đơn giản hóa việc gỡ lỗi bằng cách tự động tạo cấu hình chạy tạm thời cho những người chơi được kết nối, tối ưu hóa các phiên tiếp theo và cho phép dễ dàng lưu và chia sẻ với nhóm của bạn trên nhiều nền tảng khác nhau. Đối với một số người, một tính năng quan trọng sẽ là hỗ trợ tài liệu được bản địa hóa ngay trong IDE.
Đây cũng là lúc để tìm hiểu sâu hơn và khám phá Bộ công cụ giao diện người dùng.
Rider đã thêm ba mẫu cho phần mở rộng giao diện người dùng cho Unity Editor dựa trên Bộ công cụ giao diện người dùng.
Rider 2023.1 bao gồm các cải tiến trong việc xác định các trường có thuộc tính [SerializeReference], tìm cách sử dụng C# trong hoạt ảnh Unity (rất bị bỏ sót) và định dạng thuộc tính [Header].
Nói chung, nhiều cải tiến đã được thêm vào để làm việc với C#. Và cuối cùng nhưng không kém phần quan trọng nhất: hỗ trợ DOTS được chờ đợi từ lâu từ JetBrains.
Chà, chúng ta hãy xem xét ngắn gọn tất cả những điều này là gì và liệu có đáng để nâng cấp Rider lên phiên bản mới nhất hay không. Nếu bạn chưa sử dụng IDE này, bài viết này cũng sẽ hữu ích cho bạn.
Đôi khi, một trò chơi hoạt động hoàn toàn tốt trong trình chỉnh sửa Unity, nhưng mọi thứ không diễn ra suôn sẻ trên các thiết bị. Giờ đây, Rider cho phép bạn gỡ lỗi mã trực tiếp trên thiết bị thông qua USB. Vâng, đó là cảm hứng.
Hãy nhớ rằng, để tính năng này hoạt động, bản dựng phải được biên dịch với các tùy chọn Gỡ lỗi Tập lệnh và Bản dựng Phát triển được bật.
Tôi muốn nhắc bạn rằng bản thân thiết bị cũng phải được thiết lập đúng cách. Đầu tiên, Chế độ nhà phát triển phải được bật trên thiết bị.
Một cách đơn giản khác để tìm mục "Số bản dựng" là tìm kiếm mục đó trong cài đặt.
Tiếp theo, những gì bạn cần làm là bật "Gỡ lỗi USB" trong "Tùy chọn nhà phát triển" xuất hiện.
Chỉ còn vài bước nữa thôi. Khởi chạy trò chơi của bạn trên thiết bị và trong menu chính của Rider, hãy nhấp vào "Chạy" và sau đó nhấp vào "Đính kèm vào quy trình thống nhất...". Trong cửa sổ mở ra, hãy chọn thiết bị Android có ứng dụng của bạn.
Mọi thứ đã sẵn sàng! Đặt điểm dừng và gỡ lỗi trò chơi của bạn trực tiếp từ thiết bị! Đừng ngần ngại tận dụng công cụ sửa lỗi mạnh mẽ này và nâng cao quá trình phát triển trò chơi của bạn.
Ngay khi bạn bắt đầu gỡ lỗi lần đầu tiên, Rider sẽ tự động tạo cấu hình chạy tạm thời cho trình phát Android. Nếu bạn muốn lưu cấu hình chạy để sử dụng trong tương lai, bạn có thể làm như vậy và chia sẻ nó với nhóm của mình.
Tất nhiên, tất cả chúng ta đều đã rất quen với IMGUI cũ, tốt và đồng thời cực kỳ cứng nhắc. Tuy nhiên, nhóm Unity đã làm việc trên gói Bộ công cụ giao diện người dùng mới trong một thời gian dài để cải thiện trải nghiệm tạo giao diện người dùng cho trò chơi của chúng tôi. Bắt đầu với Unity 2022.2, bạn nên sử dụng phương pháp mới khi tạo giao diện người dùng trong trình chỉnh sửa.
UI Toolkit là một chủ đề sâu riêng biệt. Tôi sẽ chỉ nói rằng cách tiếp cận mới mang đến một cách tiếp cận thuận tiện hơn và ở một mức độ nào đó, phổ biến hơn để tạo giao diện người dùng. Nếu bạn có kinh nghiệm với HTML và CSS, bạn sẽ rất dễ thích nghi. Nhưng tôi cũng khuyên những người khác không nên chậm trễ trong việc làm chủ UI Toolkit.
Giờ đây, Rider, đối với các dự án Unity 2022.2 trở lên, cung cấp việc sử dụng các mẫu mới theo mặc định. Hãy thử một trong số họ. Đối với điều này, trước tiên, chúng tôi sẽ tạo một ScriptableObject đơn giản để mô tả các mục trong trò chơi.
[CreateAssetMenu(fileName = "GameItem", menuName = "Game Item", order = 0)] public class GameItem : ScriptableObject { public string itemName; public int weight; public int price; }
Hãy tạo trình chỉnh sửa tùy chỉnh cho ScriptableObject này. Để thực hiện việc này, nhấp chuột phải vào thư mục Trình chỉnh sửa trong Rider, sau đó Thêm và chọn Unity Script.
Trong cửa sổ mở ra, chọn Custom Editor. Hãy đặt tên cho trình soạn thảo của chúng ta là GameItemEditor.
Trong thuộc tính CustomEditor, hãy chỉ ra rằng trình chỉnh sửa đã tạo dành cho lớp GameItem.
using UnityEditor; using UnityEngine.UIElements; [CustomEditor(typeof(GameItem))] public class GameItemEditor : Editor { public override VisualElement CreateInspectorGUI() { return base.CreateInspectorGUI(); } }
Mở Cửa sổ-> Bộ công cụ giao diện người dùng-> Trình tạo giao diện người dùng. Trong Viewport, lưu UI Document hiện tại và đặt tên là GameItem.uxml. Từ cửa sổ Thư viện, thêm ba trường tương ứng với các trường lớp GameItem của chúng tôi và đặt tên thích hợp cho chúng.
Làm việc với UI Toolkit có một số lợi thế rõ ràng. Có thể chỉnh sửa đồ họa các tài liệu UXML có sẵn ngay lập tức thông qua UI Builder, cũng như thông qua lập trình, hơi giống với IGMUI. Giờ đây, kiểu hiển thị giao diện người dùng có thể được đặt trong USS, về cơ bản tương tự như CSS, sau đó được sử dụng lại trong dự án. Oh, làm thế nào điều này đã mất tích. Hỗ trợ hoàn tác tự động cũng có mặt.
Một thực tế quan trọng khác là liên kết dữ liệu tự động. Hãy cho biết tên của các trường lớp GameItem trong các trường Đường dẫn liên kết.
Đừng quên lưu tài liệu qua menu File->Save As… trong cửa sổ Viewport. Các phím nóng để lưu Ctrl-S / Cmd-S sẽ không giúp bạn ở đây.
<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>
Bây giờ, hãy hoàn thành việc viết GameItemEditor để nó tạo thành trình kiểm tra trực tiếp từ tài liệu UXML.
[CustomEditor(typeof(GameItem))] public class GameItemEditor : Editor { public VisualTreeAsset treeAsset; public override VisualElement CreateInspectorGUI() { var inspector = new VisualElement(); treeAsset.CloneTree(inspector); return inspector; } }
Chọn tập lệnh GameItemEditor trong cửa sổ Dự án và chỉ định tài liệu giao diện người dùng đã tạo GameItem.uxml cho trường Tài sản cây, chỉ cần kéo nó vào đó.
Trình chỉnh sửa tùy chỉnh của chúng tôi cho lớp GameItem đã sẵn sàng. Bạn có thể thử nghiệm một chút với tài liệu giao diện người dùng và xem những thay đổi của nó sẽ ảnh hưởng như thế nào đến màn hình trong trình kiểm tra.
Chà, việc phát hành Rider 2023.1 mới là một lý do chính đáng để nghiên cứu sâu về Bộ công cụ giao diện người dùng và nhận được tất cả những lợi ích khi sử dụng nó.
Ngăn xếp công nghệ hướng dữ liệu của Unity, hay đơn giản là DOTS, là một dự án đã được nhóm Unity phát triển trong nhiều năm. Sau gần một năm không có bất kỳ bản cập nhật nào, các gói DOTS đã chuyển từ trạng thái thử nghiệm sang bản phát hành trước, nhận phiên bản 1.0.0. Tại thời điểm viết bài này, nó là 1.0.0-pre.65. Và có một lời hứa về việc phát hành vào năm 2023.
Bất chấp thời gian phát triển dài và một số nghi ngờ về DOTS, những người đã từ bỏ việc chờ đợi phát hành, ngăn xếp mới vẫn gây ngạc nhiên với khả năng và hiệu suất của nó.
Thiết kế hướng dữ liệu, hay nói chung là Hệ thống thành phần thực thể (ECS), cung cấp một cách tiếp cận hoàn toàn khác đối với kiến trúc lập trình trò chơi. Không giống như các mẫu Lập trình hướng đối tượng quen thuộc, trọng tâm ở đây là phân tách dữ liệu và xử lý dữ liệu. Trong một kiến trúc như vậy, dữ liệu tương tự thường được đặt gần nhau trong bộ nhớ và cho phép các hệ thống xử lý dữ liệu đó với tốc độ đáng kinh ngạc, đặc biệt nếu điều này có thể được thực hiện ở chế độ đa luồng.
Một lượng lớn công việc đã được thực hiện trên DOTS, với các cơ chế quản lý bộ nhớ riêng được thêm vào để chúng có thể được sử dụng thuận tiện trực tiếp từ C#.
Với việc phát hành DOTS 1.0.0, nhiều cách tiếp cận để phát triển ứng dụng đã thay đổi. Theo tôi, chúng đã trở nên thuận tiện và trực quan hơn.
Mặc dù vẫn còn thiếu tài liệu tốt, nhưng cũng đủ để bắt đầu đi sâu vào thế giới DOTS vô cùng hiệu quả và điều chỉnh lại bộ não của bạn để xử lý dữ liệu đa luồng và ECS.
Trước đây tôi đã phát hành một bài viết về mô phỏng trọng lực bằng Gravity Simulation With Unity DOTS 1.0 . Nếu muốn, bạn cũng có thể tìm thấy nhiều tài liệu giáo dục khác để nghiên cứu ngăn xếp này. Để kiểm tra các khả năng mới của Rider, tôi đã mở dự án Truyền sóng cũ của mình, được viết trên phiên bản DOTS trước đó.
Điều luôn làm tôi khó chịu là nhiều cảnh báo do Rider hoặc Visual Studio đưa ra do đặc thù của việc viết mã. Bây giờ mã trông sạch sẽ và dễ chịu.
Cuối cùng! Tôi đã chờ đợi điều này biết bao! Rider chính thức hỗ trợ DOTS, điều này chắc chắn khiến nó trở thành IDE số một để phát triển Unity. Bây giờ Rider thực sự hiểu điều gì đúng và điều gì không.
Ví dụ, trong đoạn mã này,
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 gợi ý rằng bây giờ, để có quyền truy cập chính xác vào Trường đơn lẻ, OnCreate() cần đặt kỳ vọng thông qua trạng thái phương thức. 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(); } }
Các mẫu để tạo baker cho MonoBehaviors đã xuất hiện và bạn sẽ được cung cấp để tạo một thành phần mới hoặc thêm các trường vào một thành phần hiện có.
Tất nhiên, không phải mọi thứ đều hoàn hảo. Khi tạo mã baker, một mẫu lỗi thời được sử dụng. Tôi đã nhận được mã này.
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; }
Ở đây, các phương thức đã lỗi thời GetEntity() và AddComponent() được sử dụng. Thay vào đó, việc bổ sung thành phần bây giờ nên được thực hiện theo cách này.
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 }); }
Tất nhiên, bạn có thể tự thay đổi các mẫu. Nhưng tôi nghĩ rằng bản sửa lỗi từ JetBrains sẽ không mất nhiều thời gian để đến nơi. Ngoài ra còn có khả năng tạo một MonoBehaviour ủy quyền với một baker cho thành phần. Trong blog của họ, bạn đã có thể tìm thấy một bài viết , trong đó mô tả rộng rãi các khả năng mới khi làm việc với DOTS, vì vậy tôi không thấy có ích gì khi mô tả điều tương tự ở đây.
Bản phát hành Rider 2023.1 mang đến vô số tính năng và cải tiến mới cho các nhà phát triển Unity, củng cố vị thế là IDE tốt nhất để phát triển Unity. Với tính năng gỡ lỗi nâng cao dành cho thiết bị Android, các mẫu mới cho Bộ công cụ giao diện người dùng, hỗ trợ DOTS được chờ đợi từ lâu và các tính năng bổ sung như truy cập nhanh vào tài liệu trực tuyến cho các gói đăng ký Unity và tài liệu API được bản địa hóa, JetBrains tiếp tục nâng cao tiêu chuẩn cho các công cụ phát triển trò chơi. Những tính năng này không chỉ đơn giản hóa quá trình phát triển mà còn trao quyền cho các nhà phát triển để tạo ra những trò chơi hay hơn, hiệu quả hơn.
Ngoài ra, Rider 2023.1 còn cung cấp một số bản cập nhật khác, chẳng hạn như phát hiện chính xác hơn các trường được đánh số thứ tự trong mã, hỗ trợ cải thiện để tìm cách sử dụng C# trong hoạt ảnh Unity và bản cập nhật được yêu cầu cao cho công cụ định dạng để đặt thuộc tính [Header] trên một dòng riêng. Những cải tiến này góp phần mang lại trải nghiệm phát triển hợp lý và hiệu quả hơn.
Cho dù bạn là nhà phát triển Unity có kinh nghiệm hay mới bắt đầu, bản phát hành Rider 2023.1 đều đáng để khám phá. Các tính năng mới phục vụ cho nhiều nhu cầu và giúp hợp lý hóa quá trình phát triển. Nếu bạn chưa từng sử dụng Rider trước đây, bản phát hành này mang đến cơ hội tuyệt vời để trải nghiệm trực tiếp các tính năng mạnh mẽ của nó. Đối với những người đã sử dụng Rider, việc nâng cấp lên phiên bản mới nhất chắc chắn sẽ nâng cao quy trình phát triển trò chơi của bạn.
Nắm bắt những tiến bộ mới nhất trong phát triển Unity với Rider 2023.1 và đưa các dự án trò chơi của bạn lên một tầm cao mới. Đừng bỏ lỡ cơ hội cải thiện trải nghiệm phát triển của bạn và tạo ra các trò chơi hấp dẫn hơn, hiệu suất cao hơn.