Die 10 häufigsten Fehler, die Unity-Entwickler machen

Veröffentlicht: 2022-03-11

Unity ist ein großartiges und unkompliziertes Tool für die Entwicklung auf mehreren Plattformen. Die Prinzipien sind leicht verständlich und Sie können intuitiv mit der Erstellung Ihrer Produkte beginnen. Wenn Sie jedoch einige Dinge nicht berücksichtigen, werden sie Ihren Fortschritt verlangsamen, wenn Sie mit Ihrer Arbeit auf die nächste Stufe gehen, wenn Sie sich von der anfänglichen Prototypenphase bewegen oder sich einer endgültigen Veröffentlichung nähern. Dieser Artikel gibt Ratschläge, wie Sie die häufigsten Probleme lösen und grundlegende Fehler in Ihren neuen oder bestehenden Projekten vermeiden können. Bitte beachten Sie, dass sich die Perspektive dieses Artikels mehr auf die Entwicklung von 3D-Anwendungen konzentriert, aber alles Erwähnte gilt auch für die 2D-Entwicklung.

Unity ist ein großartiges und unkompliziertes Tool für die Entwicklung auf mehreren Plattformen.
Twittern

Häufiger Unity-Fehler Nr. 1: Unterschätzte Projektplanungsphase

Für jedes Projekt ist es entscheidend, mehrere Dinge festzulegen, bevor der Anwendungsdesign- und Programmierteil des Projekts überhaupt beginnt. Heutzutage, wo Produktmarketing ein wichtiger Teil des gesamten Prozesses ist, ist es auch wichtig, eine klare Vorstellung davon zu haben, was das Geschäftsmodell der implementierten Anwendung sein wird. Sie müssen sicher sein, für welche Plattformen Sie Produkte veröffentlichen werden und welche Plattformen in Ihrem Plan enthalten sind. Es ist auch notwendig, die minimal unterstützten Gerätespezifikationen festzulegen (unterstützen Sie ältere Low-End-Geräte oder nur neuere Modelle?), um eine Vorstellung davon zu bekommen, welche Leistung und Grafik Sie sich leisten können. Jedes Thema in diesem Artikel wird von dieser Tatsache beeinflusst.

Aus technischer Sicht sollte es notwendig sein, den gesamten Arbeitsablauf zum Erstellen von Assets und Modellen im Voraus festzulegen, während sie dem Programmierer zur Verfügung gestellt werden, mit besonderem Augenmerk auf den Iterationsprozess, wenn die Modelle weitere Änderungen und Verfeinerungen benötigen. Sie sollten eine klare Vorstellung von der gewünschten Bildrate und dem Vertex-Budget haben, damit der 3D-Künstler weiß, in welcher maximalen Auflösung die Modelle sein müssen und wie viele LOD-Variationen er ausführen muss. Es sollte auch angegeben werden, wie alle Messungen vereinheitlicht werden, um eine konsistente Skalierung und einen Importprozess in der gesamten Anwendung zu erhalten.

Die Art und Weise, wie die Level gestaltet werden, ist entscheidend für die zukünftige Arbeit, da die Aufteilung der Level die Leistung stark beeinflusst. Performance-Bedenken müssen beim Entwerfen neuer Levels immer im Hinterkopf behalten werden. Gehen Sie nicht mit unrealistischen Visionen. Es ist immer wichtig, sich die Frage zu stellen: „Ist es vernünftig zu erreichen?“ Wenn nicht, sollten Sie Ihre wertvollen Ressourcen nicht für etwas kaum Erreichbares verschwenden (falls es natürlich nicht Teil Ihrer Geschäftsstrategie ist, dies als Ihren wichtigsten Wettbewerbsvorteil zu haben).

Häufiger Unity-Fehler Nr. 2: Arbeiten mit nicht optimierten Modellen

Es ist wichtig, dass alle Ihre Modelle gut vorbereitet sind, um sie ohne weitere Änderungen in Ihren Szenen verwenden zu können. Es gibt mehrere Dinge, die das gute Modell erfüllen sollte.

Es ist wichtig, die Waage richtig einzustellen. Manchmal ist es nicht möglich, dies in Ihrer 3D-Modellierungssoftware richtig einzustellen, da diese Anwendungen unterschiedliche Einheiten verwenden. Um alles richtig zu machen, legen Sie den Skalierungsfaktor in den Modellimporteinstellungen fest (lassen Sie 0,01 für 3dsMax und Modo, stellen Sie 1,0 für Maya ein), und beachten Sie, dass Sie manchmal Objekte erneut importieren müssen, nachdem Sie die Skalierungseinstellung geändert haben. Diese Einstellungen sollten sicherstellen, dass Sie in Ihren Szenen nur die grundlegende Skala 1,1,1 verwenden können, um ein konsistentes Verhalten und keine physikalischen Probleme zu erhalten. Dynamisches Batching wird auch eher korrekt funktionieren. Diese Regel sollte auch auf jedes Unterobjekt im Modell angewendet werden, nicht nur auf das Hauptobjekt. Wenn Sie Objektabmessungen optimieren müssen, tun Sie dies in Bezug auf andere Objekte in der 3D-Modellierungsanwendung und nicht in Unity. Sie können jedoch mit der Skalierung in Unity experimentieren, um geeignete Werte herauszufinden, aber für die endgültige Anwendung und einen konsistenten Workflow ist es gut, alles gut vorbereitet zu haben, bevor Sie in Unity importieren.

In Bezug auf die Funktionalität von Objekten und ihre dynamischen Teile – teilen Sie Ihre Modelle gut auf. Je weniger Unterobjekte, desto besser. Trennen Sie Teile des Objekts nur für den Fall, wenn Sie sie benötigen, z. B. um sie dynamisch zu bewegen oder zu drehen, für Animationszwecke oder andere Interaktionen. Der Drehpunkt jedes Objekts und seiner Unterobjekte sollte im Hinblick auf seine Hauptfunktion richtig ausgerichtet und gedreht sein. Die Z-Achse des Hauptobjekts sollte nach vorne zeigen und der Drehpunkt sollte sich zur besseren Platzierung in der Szene am unteren Rand des Objekts befinden. Verwenden Sie so wenig Materialien wie möglich an Objekten (mehr dazu weiter unten).

Alle Assets sollten Eigennamen haben, die ihren Typ und ihre Funktionalität leicht beschreiben. Behalten Sie diese Konsistenz in all Ihren Projekten bei.

Häufiger Unity-Fehler Nr. 3: Aufbau einer voneinander abhängigen Code-Architektur

Das Prototyping und die Implementierung von Funktionen in Unity ist recht einfach. Sie können beliebige Verweise auf andere Objekte einfach per Drag-and-Drop ziehen, jedes einzelne Objekt in der Szene ansprechen und auf alle darin enthaltenen Komponenten zugreifen. Dies kann jedoch auch potenziell gefährlich sein. Zusätzlich zu den spürbaren Leistungsproblemen (das Auffinden eines Objekts in der Hierarchie und der Zugriff auf Komponenten hat seinen Overhead), besteht auch eine große Gefahr darin, Teile Ihres Codes vollständig voneinander abhängig zu machen. Oder Sie sind von anderen Systemen und Skripten abhängig, die für Ihre Anwendung einzigartig sind, oder sogar von der aktuellen Szene oder dem aktuellen Szenario. Versuchen Sie, einen modulareren Ansatz zu wählen und wiederverwendbare Teile zu erstellen, die in anderen Teilen Ihrer Anwendung verwendet oder sogar in Ihrem gesamten Anwendungsportfolio gemeinsam genutzt werden können. Bauen Sie Ihr Framework und Ihre Bibliotheken auf der Unity-API genauso auf, wie Sie Ihre Wissensdatenbank aufbauen.

Es gibt viele verschiedene Ansätze, um dies sicherzustellen. Ein guter Ausgangspunkt ist das Unity-Komponentensystem selbst. Komplikationen können auftreten, wenn bestimmte Komponenten mit anderen Systemen der Anwendung kommunizieren müssen. Dazu können Sie Schnittstellen verwenden, um Teile Ihres Systems abstrakter und wiederverwendbar zu machen. Alternativ können Sie einen ereignisgesteuerten Ansatz verwenden, um auf bestimmte Ereignisse außerhalb des Geltungsbereichs zu reagieren, indem Sie entweder ein Nachrichtensystem erstellen oder sich direkt bei Teilen des anderen Systems als Listener registrieren. Der richtige Ansatz besteht darin, gameObject-Eigenschaften von der Programmlogik zu trennen (zumindest so etwas wie das Model-Controller-Prinzip), da es schwierig ist, zu identifizieren, welche Objekte seine Transformationseigenschaften wie Position und Rotation ändern. Es sollte ausschließlich in der Verantwortung seines Verantwortlichen liegen.

Versuchen Sie, alles gut zu dokumentieren. Behandeln Sie es immer so, als sollten Sie nach langer Zeit zu Ihrem Code zurückkehren und schnell verstehen müssen, was genau dieser Teil des Codes tut. Denn in der Realität kommt man oft erst nach einiger Zeit an einige Stellen in der Anwendung und das ist ein unnötiges Hindernis, um schnell ins Problem einzusteigen. Aber übertreiben Sie es nicht. Manchmal reicht ein passender Klassen-, Methoden- oder Eigenschaftsname völlig aus.

Häufiger Unity-Fehler Nr. 4: Verschwendung Ihrer Leistung

Die neueste Produktlinie von Mobiltelefonen, Konsolen oder Desktop-Computern wird niemals so fortschrittlich sein, dass Sie sich keine Gedanken über die Leistung machen müssen. Leistungsoptimierungen sind immer erforderlich und bilden die Grundlage dafür, wie Ihr Spiel oder Ihre Anwendung im Vergleich zu anderen auf dem Markt anders aussieht. Denn wenn Sie in einem Teil etwas Leistung sparen, können Sie damit andere Teile Ihrer Anwendung aufpolieren.

Es gibt viele Bereiche für Optimierungen. Der ganze Artikel wäre nötig, um nur an der Oberfläche zu diesem Thema zu kratzen. Zumindest werde ich versuchen, diesen Bereich in einige Kernbereiche zu unterteilen.

Schleifen aktualisieren

Verwenden Sie keine leistungsintensiven Dinge in Update-Schleifen, verwenden Sie stattdessen Caching. Ein typisches Beispiel ist ein Zugriff auf Komponenten oder andere Objekte in einer Szene oder intensive Berechnungen in Ihren Skripten. Wenn möglich, speichern Sie alles in Awake() -Methoden oder ändern Sie Ihre Architektur in einen ereignisgesteuerteren Ansatz, um Dinge genau dann auszulösen, wenn sie benötigt werden.

Instanziierungen

Erstellen Sie für Objekte, die häufig instanziiert werden (z. B. Kugeln in einem FPS-Spiel), einen vorinitialisierten Pool von ihnen und wählen Sie einfach einen bereits initialisierten aus, wenn Sie ihn benötigen, und aktivieren Sie ihn. Anstatt es zu zerstören, wenn es nicht mehr benötigt wird, deaktivieren Sie es und legen Sie es in den Pool zurück.

Rendern

Verwenden Sie Okklusions-Culling- oder LOD-Techniken, um gerenderte Teile der Szene einzuschränken. Versuchen Sie, optimierte Modelle zu verwenden, um die Anzahl der Scheitelpunkte in der Szene unter Kontrolle zu halten. Beachten Sie, dass die Anzahl der Scheitelpunkte nicht nur die Anzahl der Scheitelpunkte auf dem Modell selbst ist, sondern auch von anderen Dingen wie Normalen (harte Kanten), UV-Koordinaten (UV-Nähte) und Scheitelpunktfarben beeinflusst wird. Außerdem wird eine Reihe dynamischer Lichter in der Szene die Gesamtleistung dramatisch beeinflussen. Versuchen Sie also, alles im Voraus zu backen, wann immer dies möglich ist.

Zeichnen Sie Anrufe

Versuchen Sie, die Anzahl der Draw Calls zu reduzieren. In Unity können Sie Draw Calls reduzieren, indem Sie statisches Batching für unbewegte Objekte und dynamisches Batching für sich bewegende verwenden. Sie müssen jedoch zuerst Ihre Szenen und Modelle vorbereiten (gestapelte Objekte müssen dieselben Materialien verwenden), und das Stapeln dynamischer Objekte funktioniert nur für Modelle mit niedriger Auflösung. Alternativ können Sie Meshes durch das Skript zu einem kombinieren ( Mesh.CombineMeshes ), anstatt Batching zu verwenden, aber Sie müssen darauf achten, nicht zu große Objekte zu erstellen, die auf einigen Plattformen nicht von View Frustum Culling profitieren können. Generell gilt: so wenig Material wie möglich verwenden und über die Szene verteilen. Manchmal müssen Sie Atlanten aus Texturen erstellen, um ein Material für verschiedene Objekte freigeben zu können. Ein guter Tipp ist auch, eine höhere Auflösung der Szenen-Lightmap-Texturen (nicht die generierte Auflösung, sondern die Auflösung der Texturausgabe) zu verwenden, um ihre Anzahl zu verringern, wenn Sie in größeren Umgebungen Licht backen.

Überziehungsprobleme

Verwenden Sie keine transparenten Texturen, wenn dies nicht erforderlich ist, da dies zu Problemen mit der Füllrate führt. Es ist in Ordnung, es für komplizierte und weiter entfernte Geometrien wie Bäume oder Büsche zu verwenden. Wenn Sie es verwenden müssen, bevorzugen Sie Alpha-Blending-Shader anstelle von Shadern mit Alpha-Tests oder anstelle von Ausschnitt-Shadern für mobile Plattformen. Um diese Probleme im Allgemeinen zu identifizieren, versuchen Sie, die Auflösung Ihrer Anwendung zu verringern. Wenn es hilft, ist es möglich, dass Sie diese Füllratenprobleme haben oder Ihre Shader weiter optimieren müssen. Andernfalls kann es sich um ein weiteres Speicherproblem handeln.

Shader

Optimieren Sie Ihre Shader für eine bessere Leistung. Reduzieren Sie die Anzahl der Durchgänge, verwenden Sie Variablen mit geringerer Genauigkeit, ersetzen Sie komplizierte mathematische Berechnungen durch vorgenerierte Lookup-Texturen.

Verwenden Sie immer einen Profiler, um die Engpässe zu ermitteln. Es ist ein großartiges Werkzeug. Zum Rendern können Sie auch den großartigen Frame-Debugger verwenden, der Ihnen hilft, viel darüber zu lernen, wie die Dinge im Allgemeinen funktionieren, wenn Sie Renderprozesse damit zerlegen.

Häufiger Unity-Fehler Nr. 5: Ignorieren von Problemen mit der Garbage Collection

Es ist notwendig zu erkennen, dass trotz der Tatsache, dass Garbage Collector (GC) selbst uns hilft, wirklich effizient zu sein und uns auf wichtige Dinge beim Programmieren zu konzentrieren, es einige Dinge gibt, die wir ausdrücklich beachten sollten. Die Nutzung von GC ist nicht kostenlos. Generell sollten wir unnötige Speicherzuweisungen vermeiden, um zu verhindern, dass GC sich zu oft selbst auslöst und so die Leistung durch Framerate-Spikes beeinträchtigt. Idealerweise sollten überhaupt keine neuen Speicherzuweisungen regelmäßig in jedem Frame stattfinden. Doch wie können wir dieses Ziel erreichen? Es wird wirklich von der Anwendungsarchitektur bestimmt, aber es gibt einige Regeln, die Sie befolgen können, die helfen:

  • Vermeiden Sie unnötige Allokationen in Aktualisierungsschleifen.
  • Verwenden Sie Strukturen für einfache Eigenschaftscontainer, da sie nicht auf dem Heap zugewiesen werden.
  • Versuchen Sie, Arrays oder Listen oder andere Sammlungen von Objekten vorab zuzuweisen, anstatt sie innerhalb von Aktualisierungsschleifen zu erstellen.
  • Vermeiden Sie die Verwendung von monoproblematischen Dingen (wie zum Beispiel LINQ-Ausdrücken oder Foreach-Schleifen), da Unity eine ältere, nicht ideal optimierte Version von Mono verwendet (zum Zeitpunkt des Schreibens ist es die modifizierte Version 2.6, mit Upgrade auf der Roadmap).
  • Cache-Strings in Awake() Methoden oder in Ereignissen.
  • Wenn eine Aktualisierung der String-Eigenschaft in der Aktualisierungsschleife erforderlich ist, verwenden Sie das StringBuilder-Objekt anstelle von String.
  • Verwenden Sie den Profiler, um potenzielle Probleme zu identifizieren.

Häufiger Unity-Fehler Nr. 6: Optimierung der Speicher- und Speicherplatznutzung zuletzt

Es ist notwendig, die Aufmerksamkeit von Beginn des Projekts an auf die niedrigste Speicher- und Speicherplatznutzung der Anwendung zu richten, da es komplizierter ist, dies zu tun, wenn Sie die Optimierung für die Vorabveröffentlichungsphase verlassen. Auf Mobilgeräten ist dies noch wichtiger, da wir dort recht knapp bei Ressourcen sind. Auch wenn wir die Größe der Installation von 100 MB überschreiten, können wir einen erheblichen Teil unserer Kunden verlieren. Das liegt an der 100-MB-Grenze für Downloads aus dem Mobilfunknetz, aber auch an psychologischen Gründen. Es ist immer besser, wenn Ihre Anwendung die wertvollen Telefonressourcen der Kunden nicht verschwendet, und sie werden Ihre App mit größerer Wahrscheinlichkeit herunterladen oder kaufen, wenn sie kleiner ist.

Um Ressourcenfresser zu finden, können Sie das Editor-Protokoll verwenden, in dem Sie (nach jedem neuen Build) die Größe der Ressourcen sehen können, die in separate Kategorien wie Audio, Texturen und DLLs unterteilt sind. Zur besseren Orientierung gibt es im Unity Asset Store Editor Extensions, die Ihnen eine detaillierte Übersicht mit referenzierten Ressourcen und Dateien in Ihrem Dateisystem liefern. Der tatsächliche Speicherverbrauch kann auch im Profiler angezeigt werden, aber es wird empfohlen, ihn zu testen, wenn eine Verbindung zum Build auf Ihrer Zielplattform besteht, da beim Testen in einem Editor oder auf etwas anderem als Ihrer Zielplattform viele Inkonsistenzen auftreten.

Die größten Speicherverbraucher sind oft Texturen. Verwenden Sie vorzugsweise komprimierte Texturen, da sie viel weniger Platz und Speicher benötigen. Machen Sie alle Texturen quadratisch, machen Sie idealerweise die Länge beider Seiten zu einer Potenz von zwei (POT), aber denken Sie daran, dass Unity NPOT-Texturen auch automatisch auf POT skalieren kann. Texturen können komprimiert werden, wenn sie in der POT-Form vorliegen. Atlas-Texturen zusammen, um die gesamte Textur zu füllen. Manchmal können Sie sogar den Textur-Alphakanal für einige zusätzliche Informationen für Ihre Shader verwenden, um zusätzlichen Platz und Leistung zu sparen. Versuchen Sie natürlich, Texturen für Ihre Szenen so oft wie möglich wiederzuverwenden, und verwenden Sie sich wiederholende Texturen, wenn es möglich ist, ein gutes visuelles Erscheinungsbild beizubehalten. Bei Low-End-Geräten können Sie die Auflösung von Texturen in den Qualitätseinstellungen verringern. Verwenden Sie das komprimierte Audioformat für längere Audioclips, wie die Hintergrundmusik.

Wenn Sie es mit unterschiedlichen Plattformen, Auflösungen oder Lokalisierungen zu tun haben, können Sie Asset-Bundles verwenden, um unterschiedliche Sätze von Texturen für unterschiedliche Geräte oder Benutzer zu verwenden. Diese Asset Bundles können nach der Installation der Anwendung dynamisch aus dem Internet geladen werden. Auf diese Weise können Sie die 100-MB-Grenze überschreiten, indem Sie während des Spiels Ressourcen herunterladen.

Häufiger Unity-Fehler Nr. 7: Häufige Fehler in der Physik

Manchmal, wenn wir Objekte in der Szene bewegen, erkennen wir nicht, dass das Objekt einen Collider hat und dass eine Änderung seiner Position die Engine dazu zwingt, die gesamte physische Welt noch einmal neu zu berechnen. In diesem Fall sollten Sie die Rigidbody Komponente hinzufügen (Sie können sie auf nicht-kinematisch setzen, wenn Sie nicht möchten, dass externe Kräfte beteiligt sind).

Um die Position des Objekts mit Rigidbody zu ändern, legen Sie immer Rigidbody.position , wenn eine neue Position nicht auf die vorherige folgt, oder Rigidbody.MovePosition , wenn es sich um eine kontinuierliche Bewegung handelt, die auch die Interpolation berücksichtigt. Wenden Sie beim Ändern Operationen immer in FixedUpdate an, nicht in Update -Funktionen. Es wird ein konsistentes physikalisches Verhalten sicherstellen.

Verwenden Sie nach Möglichkeit primitive Collider für gameObjects, wie Kugeln, Kästchen oder Zylinder, und keine Mesh-Collider. Sie können Ihren endgültigen Collider aus mehr als einem dieser Collider zusammenstellen. Die Physik kann aufgrund ihres CPU-Overheads ein Leistungsengpass Ihrer Anwendung sein, und Kollisionen zwischen primitiven Collidern sind viel schneller zu berechnen. Sie können auch die Einstellung Fester Zeitschritt im Zeitmanager anpassen, um die Häufigkeit fester Physikaktualisierungen zu reduzieren, wenn die Genauigkeit der Physikinteraktion nicht so wichtig ist.

Häufiger Unity-Fehler Nr. 8: Manuelles Testen aller Funktionen

Manchmal besteht die Tendenz, die Funktionalität manuell zu testen, indem Sie im Spielmodus experimentieren, weil es ziemlich viel Spaß macht und Sie alles unter Ihrer direkten Kontrolle haben. Dieser Coolness-Faktor kann aber recht schnell nachlassen. Je komplexer die Anwendung wird, desto mehr mühsame Aufgaben muss der Programmierer wiederholen und überdenken, um sicherzustellen, dass sich die Anwendung so verhält, wie sie ursprünglich beabsichtigt war. Aufgrund seines repetitiven und passiven Charakters kann es leicht zum schlimmsten Teil des gesamten Entwicklungsprozesses werden. Da das manuelle Wiederholen von Testszenarien nicht so viel Spaß macht, besteht auch eine höhere Wahrscheinlichkeit, dass einige Fehler den gesamten Testprozess durchlaufen.

Unity verfügt über großartige Testwerkzeuge, um dies zu automatisieren. Mit geeignetem Architektur- und Codedesign können Sie Komponententests zum Testen isolierter Funktionen oder sogar Integrationstests zum Testen komplexerer Szenarien verwenden. Sie können den Try-and-Check- Ansatz, bei dem Sie tatsächliche Daten protokollieren und mit dem gewünschten Zustand vergleichen, drastisch reduzieren.

Manuelles Testen ist ohne Zweifel ein kritischer Teil der Entwicklung. Aber seine Menge kann reduziert werden, und der gesamte Prozess kann robuster und schneller sein. Wenn es keine Möglichkeit gibt, es zu automatisieren, bereiten Sie Ihre Testszenen so vor, dass Sie so schnell wie möglich in das Problem einsteigen können, das Sie zu lösen versuchen. Idealerweise ein paar Frames nach dem Drücken der Play-Taste. Implementieren Sie Verknüpfungen oder Cheats, um den gewünschten Zustand zum Testen einzustellen. Stellen Sie außerdem sicher, dass die Testsituation isoliert ist, was das Problem verursacht. Jede unnötige Sekunde im Spielmodus beim Testen wird angesammelt, und je größer die anfängliche Neigung zum Testen des Problems ist, desto wahrscheinlicher werden Sie das Problem überhaupt nicht testen und hoffen, dass alles gut funktioniert. Aber das wird es wahrscheinlich nicht.

Häufiger Unity-Fehler Nr. 9: Zu denken, dass Unity Asset Store-Plug-ins all Ihre Probleme lösen

Vertrau mir; sie werden nicht. Bei der Arbeit mit einigen Kunden war ich manchmal mit der Tendenz oder Relikten aus der Vergangenheit konfrontiert, Asset-Store-Plugins für jede einzelne Kleinigkeit zu verwenden. Ich meine nicht, dass es im Unity Asset Store keine nützlichen Unity-Erweiterungen gibt. Es gibt viele von ihnen, und manchmal ist es sogar schwierig, sich für eine zu entscheiden. Aber für jedes Projekt ist es wichtig, Konsistenz zu wahren, die zerstört werden kann, indem man unklugerweise verschiedene Teile verwendet, die nicht gut zusammenpassen.

Andererseits ist es für Funktionen, deren Implementierung viel Zeit in Anspruch nehmen würde, immer sinnvoll, auf gut getestete Produkte aus dem Unity Asset Store zurückzugreifen, wodurch Sie viel Entwicklungszeit einsparen können. Wählen Sie jedoch sorgfältig aus und verwenden Sie die bewährten, die nicht viele unkontrollierbare und seltsame Fehler in Ihr Endprodukt bringen. Fünf-Sterne-Bewertungen sind ein guter Maßstab für den Anfang.

Wenn Ihre gewünschte Funktionalität nicht schwer zu implementieren ist, fügen Sie sie einfach zu Ihren ständig wachsenden persönlichen (oder firmeneigenen) Bibliotheken hinzu, die später wieder in all Ihren Projekten verwendet werden können. So verbesserst du gleichzeitig dein Wissen und dein Instrumentarium.

Häufiger Unity-Fehler Nr. 10: Keine Notwendigkeit, die grundlegende Unity-Funktionalität zu erweitern

Manchmal scheint es, dass die Umgebung des Unity-Editors für grundlegende Spieltests und Leveldesign völlig ausreichend ist, und eine Erweiterung ist Zeitverschwendung. Aber glauben Sie mir, das ist es nicht. Das große Erweiterungspotential von Unity liegt in der Möglichkeit, es an spezifische Probleme anzupassen, die in verschiedenen Projekten gelöst werden müssen. Dies kann entweder die Benutzererfahrung beim Arbeiten in Unity verbessern oder den gesamten Entwicklungs- und Leveldesign-Workflow erheblich beschleunigen. Es wäre bedauerlich, keine integrierten Funktionen wie integrierte oder benutzerdefinierte Property Drawers, Decorator Drawers, benutzerdefinierte Komponenteninspektoreinstellungen zu verwenden oder sogar keine ganzen Plugins mit eigenen Editorfenstern zu erstellen.

Fazit

Ich hoffe, dass diese Themen für Sie nützlich sind, wenn Sie Ihre Unity-Projekte weiterentwickeln. Es gibt viele Dinge, die projektspezifisch sind und daher nicht angewendet werden können, aber es ist immer nützlich, einige Grundregeln im Hinterkopf zu haben, wenn man versucht, schwierigere und spezifischere Probleme zu lösen. Möglicherweise haben Sie unterschiedliche Meinungen oder Vorgehensweisen, wie Sie diese Probleme in Ihren Projekten lösen können. Am wichtigsten ist es, Ihre Redewendungen während des gesamten Projekts konsistent zu halten, damit jeder in Ihrem Team klar verstehen kann, wie die jeweilige Domäne korrekt hätte gelöst werden sollen.


Weiterführende Literatur im Toptal Engineering Blog:

  • Unity-KI-Entwicklung: Ein endliches Maschinen-Tutorial