Entdecken Sie Rider 2023.1, das Riders Position als beste IDE für die Unity-Entwicklung festigt. Wir werden die vielen (und in manchen Fällen sehr lange erwarteten) Funktionen erkunden und herausfinden, wie sie die Entwicklung vereinfachen und Entwickler in die Lage versetzen, bessere und effizientere Spiele zu entwickeln.
Hallo zusammen, mein Name ist Denis Kondratev und ich bin Unity-Entwickler bei MY.GAMES. Meiner Meinung nach hat sich Rider, die IDE von JetBrains, seit langem als die beste IDE für die Unity-Entwicklung etabliert. Darüber hinaus wurden mit der jüngsten Veröffentlichung von Rider 2023.1 viele neue Funktionen hinzugefügt, um Entwicklern das Leben zu erleichtern. Wieder einmal legt JetBrains die Messlatte hoch und hat nicht enttäuscht.
Mit dieser neuen Version können wir Spiele debuggen, die auf Android-Geräten über ein USB-Kabel laufen. Im Allgemeinen vereinfacht es das Debuggen, indem es automatisch temporäre Laufkonfigurationen für verbundene Spieler erstellt, nachfolgende Sitzungen optimiert und ein einfaches Speichern und Teilen mit Ihrem Team auf verschiedenen Plattformen ermöglicht. Und dennoch ist für einige Entwickler eine weitere wichtige Funktion die Unterstützung lokalisierter Dokumentation direkt in der IDE selbst.
Es ist auch an der Zeit, endlich tiefer in das UI Toolkit einzutauchen und es zu erkunden.
Rider hat drei Vorlagen für UI-Erweiterungen für den Unity Editor basierend auf dem UI Toolkit hinzugefügt.
Rider 2023.1 enthält Verbesserungen bei der Identifizierung von Feldern mit dem Attribut [SerializeReference], beim Finden der C#-Verwendung in Unity-Animationen (was schmerzlich vermisst wurde) und bei der Formatierung von [Header]-Attributen.
Generell wurden viele Verbesserungen für die Arbeit mit C# hinzugefügt. Und zu guter Letzt das Schönste von allem: die lang erwartete DOTS-Unterstützung von JetBrains.
Nachdem dies geklärt ist, lassen Sie uns kurz prüfen, ob es sich lohnt, auf die neueste Version von Rider zu aktualisieren. Wenn Sie diese IDE noch nicht verwenden, wird dieser Artikel auch für Sie nützlich sein.
Obwohl sich ein Spiel im Unity-Editor einwandfrei verhält, läuft es manchmal auf echten Geräten nicht so reibungslos. Mit Rider können wir jetzt Code direkt auf einem Gerät über USB debuggen – und das ist inspirierend.
Damit diese Funktion funktioniert, ist es wichtig zu bedenken, dass der Build mit aktivierten Entwicklungs-Build- und Skript-Debugging-Optionen kompiliert werden muss.
Ich möchte Sie auch daran erinnern, dass auch das Gerät selbst ordnungsgemäß eingerichtet sein sollte und zunächst der Entwicklermodus auf dem Gerät aktiviert sein muss:
Eine weitere einfache Möglichkeit, das Element „Build-Nummer“ zu finden, besteht darin, in den Einstellungen danach zu suchen.
Aktivieren Sie als Nächstes „USB-Debugging“ im angezeigten Menü „Entwickleroptionen“.
Noch ein paar Schritte: Starten Sie Ihr Spiel auf dem Gerät und klicken Sie im Hauptmenü von Rider auf „Ausführen“ und dann auf „An Unity-Prozess anhängen …“. Wählen Sie im geöffneten Fenster das Android-Gerät mit Ihrer Anwendung aus.
Alles ist bereit! Sie können Haltepunkte festlegen und Ihr Spiel direkt vom Gerät aus debuggen! Zögern Sie nicht, dieses leistungsstarke Debugging-Tool zu nutzen und Ihren Spieleentwicklungsprozess zu verbessern.
Noch ein Hinweis: Sobald Sie zum ersten Mal mit dem Debuggen beginnen, erstellt Rider automatisch eine temporäre Laufkonfiguration für den Android-Player. Wenn Sie die Laufkonfiguration für die zukünftige Verwendung speichern möchten, können Sie dies tun und sie mit Ihrem Team teilen.
Natürlich sind wir alle mit dem alten, guten (und gleichzeitig furchtbar unflexiblen) IMGUI bestens vertraut. Allerdings arbeitet das Unity-Team schon seit langem an einem neuen UI-Toolkit-Paket, um unsere Erfahrung bei der Erstellung von Spiel-UIs zu verbessern. Ab Unity 2022.2 wird empfohlen, beim Erstellen einer Benutzeroberfläche im Editor einen neuen Ansatz zu verwenden.
Das UI Toolkit ist ein separates, tiefgreifendes Thema. Ich möchte nur sagen, dass der neue Ansatz einen bequemeren und in gewissem Maße auch allgemeineren Ansatz für die Erstellung von Benutzeroberflächen bietet. Wenn Sie Erfahrung mit HTML und CSS haben, wird Ihnen die Anpassung sehr leicht fallen; Aber auch ohne das würde ich anderen raten, die Beherrschung des UI Toolkits nicht zu verzögern.
Rider bietet für Unity 2022.2-Projekte oder älter jetzt standardmäßig die Verwendung neuer Vorlagen an. Probieren wir eines davon aus. Dazu erstellen wir zunächst ein einfaches ScriptableObject, um die Gegenstände im Spiel zu beschreiben:
[CreateAssetMenu(fileName = "GameItem", menuName = "Game Item", order = 0)] public class GameItem : ScriptableObject { public string itemName; public int weight; public int price; }
Erstellen wir einen benutzerdefinierten Editor für dieses ScriptableObject. Klicken Sie dazu mit der rechten Maustaste auf den Ordner „Editor“ in Rider, dann auf „Hinzufügen“ und wählen Sie „Unity Script“ aus.
Wählen Sie im geöffneten Fenster Benutzerdefinierter Editor aus. Nennen wir unseren Editor GameItemEditor.
Geben Sie im CustomEditor-Attribut an, dass der erstellte Editor für die GameItem-Klasse gedacht ist.
using UnityEditor; using UnityEngine.UIElements; [CustomEditor(typeof(GameItem))] public class GameItemEditor : Editor { public override VisualElement CreateInspectorGUI() { return base.CreateInspectorGUI(); } }
Öffnen Sie nun Fenster -> UI Toolkit -> UI Builder. Speichern Sie im Ansichtsfenster das aktuelle UI-Dokument und nennen Sie es GameItem.uxml. Fügen Sie im Bibliotheksfenster drei Felder hinzu, die unseren GameItem-Klassenfeldern entsprechen, und geben Sie ihnen entsprechende Namen.
Die Arbeit mit UI Toolkit hat mehrere offensichtliche Vorteile: Die Möglichkeit, UXML-Dokumente grafisch zu bearbeiten, ist direkt über den UI Builder verfügbar, ebenso wie die Bearbeitung per Programmierung – ähnlich wie bei IGMUI. Jetzt kann der UI-Anzeigestil in USS festgelegt werden (was im Wesentlichen CSS ähnelt) und dann im Projekt wiederverwendet werden. Oh, wie das fehlte! Und die automatische Rückgängig-Unterstützung ist ebenfalls vorhanden.
Eine weitere bemerkenswerte Funktion ist die automatische Datenbindung. Geben wir die Namen der Felder der GameItem-Klasse in den Feldern „Binding Path“ an.
Vergessen Sie nicht, das Dokument über das Menü „Datei -> Speichern unter…“ im Ansichtsfenster zu speichern. (Die Hotkeys zum Speichern, Strg-S / Cmd-S, helfen Ihnen hier nicht weiter.)
Sie sollten ein UXML-Dokument erhalten, das ungefähr aus folgendem Inhalt besteht:
<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>
Schreiben wir nun den GameItemEditor fertig, sodass er den Inspektor direkt aus dem UXML-Dokument bildet:
[CustomEditor(typeof(GameItem))] public class GameItemEditor : Editor { public VisualTreeAsset treeAsset; public override VisualElement CreateInspectorGUI() { var inspector = new VisualElement(); treeAsset.CloneTree(inspector); return inspector; } }
Wählen Sie im Projektfenster das GameItemEditor-Skript aus und geben Sie das erstellte UI-Dokument GameItem.uxml für das Feld „Tree Asset“ an, indem Sie es einfach dorthin ziehen.
Unser benutzerdefinierter Editor für die GameItem-Klasse ist fertig. Sie können ein wenig mit dem UI-Dokument experimentieren und sehen, wie sich seine Änderungen auf die Anzeige im Inspektor auswirken.
Die Veröffentlichung des neuen Rider 2023.1 ist Grund genug, sich intensiv mit dem Studium des UI Toolkits zu befassen und alle Vorteile zu verstehen, die es bietet!
Der Data-Oriented Technology Stack von Unity, oder einfach DOTS, ist ein Projekt, das seit vielen Jahren vom Unity-Team entwickelt wird. Nach fast einem Jahr ohne Updates sind die DOTS-Pakete vom experimentellen Status in die Vorabversion übergegangen und haben die Version 1.0.0 erhalten. (Zum Zeitpunkt des Verfassens dieses Artikels handelt es sich um Version 1.0.0-pre.65. Die Veröffentlichung ist für 2023 geplant.)
Trotz der langen Entwicklungszeit und der Zweifel, die einige an DOTS hegten und es sogar aufgegeben haben, auf die Veröffentlichung zu warten, überrascht der neue Stack immer noch mit seinen Fähigkeiten und seiner Leistung.
Datenorientiertes Design, oder allgemeiner gesagt das Entity Component System (ECS), bietet einen völlig anderen Ansatz für die Architektur der Spieleprogrammierung. Im Gegensatz zu den bekannten Mustern der objektorientierten Programmierung liegt der Fokus hier auf der Trennung von Daten und Verarbeitung. In dieser Art von Architektur befinden sich ähnliche Daten normalerweise nahe beieinander im Speicher und ermöglichen es den Systemen, sie mit unglaublicher Geschwindigkeit zu verarbeiten, insbesondere wenn dies in einem Multithread-Modus erfolgen kann.
An DOTS wurde viel Arbeit geleistet und native Speicherverwaltungsmechanismen hinzugefügt, sodass sie bequem direkt aus C# verwendet werden können.
Mit der Veröffentlichung von DOTS 1.0.0 haben sich viele Ansätze zur Anwendungsentwicklung geändert und sind meiner Meinung nach komfortabler und intuitiver geworden.
Obwohl es immer noch an guter Dokumentation mangelt, gibt es genug, um in die unglaublich produktive Welt von DOTS einzutauchen und Ihr Gehirn auf ECS und Multithread-Datenverarbeitung umzurüsten.
Ich habe zuvor einen Artikel über Schwerkraftsimulation mit Schwerkraftsimulation mit Unity DOTS 1.0 veröffentlicht. Wenn Sie möchten, finden Sie auch viele andere Lehrmaterialien zum Studium dieses Stapels. Um die neuen Funktionen von Rider zu testen, habe ich mein altes Wave Propagation-Projekt geöffnet, das mit der vorherigen Version von DOTS geschrieben wurde.
Was mich immer geärgert hat, waren die vielen Warnungen, die Rider oder Visual Studio aufgrund der Besonderheiten beim Schreiben von Code ausgegeben haben. Jetzt sieht der Code sauber und angenehm aus.
Endlich! Wie ich darauf gewartet habe! Rider unterstützt offiziell DOTS, was es zweifellos zur führenden IDE für die Unity-Entwicklung macht. Jetzt versteht Rider wirklich, was richtig ist und was nicht.
Zum Beispiel in diesem Code:
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 schlug vor, dass OnCreate() nun für den korrekten Zugriff auf das Singleton-Feld die Erwartung über die Methode state.RequireForUpdate<Field>() festlegen muss:
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(); } }
Außerdem sind Vorlagen zum Erstellen von Bakers für MonoBehaviors erschienen, und uns wird angeboten, eine neue Komponente zu erstellen oder Felder zu einer vorhandenen Komponente hinzuzufügen.
Natürlich ist noch nicht alles perfekt. Bei der Generierung von Baker-Code wird eine veraltete Vorlage verwendet. Ich habe diesen Code bekommen.
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; }
Hier kommen die bereits veralteten Methoden GetEntity() und AddComponent() zum Einsatz. Stattdessen sollte das Hinzufügen von Komponenten jetzt auf diese Weise erfolgen:
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 }); }
Natürlich können Sie die Vorlagen selbst ändern. Aber ich denke, dass die Lösung von JetBrains nicht lange auf sich warten lassen wird. Es besteht auch die Möglichkeit, ein autorisierendes MonoBehaviour mit einem Bäcker für die Komponente zu erstellen. Auf dem JetBrains-Blog findet man bereits einen Artikel, der die neuen Möglichkeiten beim Arbeiten mit DOTS ausführlich beschreibt, daher sehe ich keinen Sinn darin, sie hier zu beschreiben.
Die Veröffentlichung von Rider 2023.1 bringt eine Fülle neuer Funktionen und Verbesserungen für Unity-Entwickler und festigt seine Position als beste IDE für die Unity-Entwicklung. Mit verbessertem Debugging für Android-Geräte, neuen Vorlagen für das UI Toolkit, lang erwarteter DOTS-Unterstützung und zusätzlichen Funktionen wie schnellem Zugriff auf Online-Dokumentation für Unity-Registrierungspakete und lokalisierter API-Dokumentation legt JetBrains die Messlatte für Spieleentwicklungstools weiterhin höher. Diese Funktionen vereinfachen nicht nur den Entwicklungsprozess, sondern ermöglichen Entwicklern auch die Entwicklung besserer und effizienterer Spiele.
Darüber hinaus bietet Rider 2023.1 mehrere weitere Updates, wie z. B. eine genauere Erkennung serialisierter Felder im Code, verbesserte Unterstützung für die Suche nach C# in Unity-Animationen und das stark nachgefragte Update der Formatierungs-Engine zum Platzieren von [Header]-Attributen in einer separaten Zeile. Diese Verbesserungen tragen zu einer schlankeren und effizienteren Entwicklungserfahrung bei.
Egal, ob Sie ein erfahrener Unity-Entwickler sind oder gerade erst anfangen, die Veröffentlichung von Rider 2023.1 ist eine Erkundung wert. Die neuen Funktionen decken ein breites Spektrum an Anforderungen ab und tragen zur Rationalisierung des Entwicklungsprozesses bei. Wenn Sie Rider noch nie verwendet haben, bietet diese Version eine hervorragende Gelegenheit, seine leistungsstarken Funktionen aus erster Hand zu erleben. Für diejenigen, die Rider bereits verwenden, wird ein Upgrade auf die neueste Version zweifellos Ihren Spieleentwicklungs-Workflow verbessern.
Profitieren Sie mit Rider 2023.1 von den neuesten Fortschritten in der Unity-Entwicklung und bringen Sie Ihre Spielprojekte auf ein neues Niveau. Verpassen Sie nicht die Chance, Ihre Entwicklungserfahrung zu verbessern und ansprechendere, leistungsstarke Spiele zu entwickeln.