Unity ist eine erstaunliche Plattform und wächst weiter. Wie viele andere Spieleentwickler habe ich zu Unity als Hauptplattform für die Spieleentwicklung gewechselt. Obwohl Unity eines der benutzerfreundlichsten Spieleentwicklungsprogramme ist, die ich je benutzt habe, ist es nicht frei von Wachstumsschmerzen. Ich habe daran gearbeitet, diese Versuche zu überwinden und zu dokumentieren. In diesem Artikel werde ich meine Erfahrungen teilen.
zusammenhängende PostsIm Inspektor der Unity werden alle Informationen zum ausgewählten Objekt in der Szenenansicht angezeigt.
Wenn Sie einen Würfel erstellen und dann auswählen, zeigt der Inspector dessen Würfel an Verwandeln Komponente, die das anzeigt x
, y
, und z
Eigenschaften der Position, Drehung und Skalierung des Würfels. Wenn Sie einen komplexeren Feind haben, den Sie erstellt haben, werden bei Auswahl dieses Objekts alle Informationen zu diesem Objekt angezeigt, die eine beliebige Anzahl von Komponenten enthalten können, die Sie an dieses Objekt angehängt haben.
Es gibt einen Haken: Damit eine Eigenschaft im Inspector sichtbar wird, muss sie in dem Skript veröffentlicht werden, zu dem diese Eigenschaft gehört: Wenn Sie das sehen möchten Feuer Geschwindigkeit
Variable einer Komponente, die an Ihr Objekt angehängt ist Feuer Geschwindigkeit
muss als öffentliche Variable deklariert werden.
Hier kommt die wahre Kraft des Inspektors ins Spiel, und hier muss noch ein weiterer Trick gelernt werden. Alle Eigenschaften, die im Inspektor angezeigt werden können, können für dieses Objekt bearbeitet werden. Wenn Ihr Skript über Code einen Standardwert für eine Eigenschaft festlegt, ist es sehr wichtig, dass Sie dies wissen Der Inspector-Wert überschreibt es. Dies bedeutet, dass wenn Feuer Geschwindigkeit
Variable hatte einen Standardwert von 4
, und du setzt es auf 8
im Inspektor, dann die Feuer Geschwindigkeit
Variable für dieses Objekt bleibt als 8
, selbst wenn Sie den Wert in ändern 4
im Skript und speichern Sie es.
(Beachten Sie, dass das Festlegen der Variablen auf einen anderen Bereich als public, d. H. Auf private oder protected, die Eigenschaft auf den Skriptwert zurücksetzt und den Wert im Inspektor verdeckt.)
Der letzte Trick, den Sie sich merken sollten, ist, dass Werte, die im Inspector bearbeitet wurden, während das Szenario nicht läuft, in der Szenenansicht gespeichert werden, während Werte, die im Inspector während des Spiels geändert wurden, gespeichert werden ist Wird während der Live-Bearbeitung ausgeführt (ja, Sie können Variablen während des Tests live bearbeiten!), werden ihre Werte wiederhergestellt, sobald Sie das Projekt getestet haben.
Diese wenigen wichtigen Punkte sind nicht zu komplex, aber es ist sehr wichtig, dass Sie sich an sie erinnern, da das Nichtbewußtsein all dies zu einem sehr verwirrenden Debugging führen kann.
Prefabs sind einer der wichtigsten Aspekte von Unity, aber sie können auf den ersten Blick etwas verwirrend sein, da sie ein paar kleinere Macken haben, die auf den ersten Blick nicht offensichtlich sind.
Ein Prefab ist im Wesentlichen eine vordefinierte Definition eines Objekts - ein Blueprint für alle Absichten und Zwecke, ähnlich einer Klasse in OOP. Prefabs können aus einer beliebigen Anzahl von Spielobjekten, Grafiken, Komponenten usw. bestehen. Sie werden am besten verwendet, wenn Sie viele Instanzen eines Objekts haben möchten und geringfügige Änderungen an diesem bestimmten Objekt wünschen.
Wenn Sie eine Reihe von Prefabs in Ihrer Szene haben und die Prefab-Definition ändern, werden alle Instanzen dieses Prefab aktualisiert. Wenn Sie alternativ eine bestimmte Instanz aktualisieren, drücken Sie Sich bewerben, Alle Instanzen des Prefab (sowie die Definition des Haupt-Prefab) werden auf die Konfiguration dieser bestimmten Instanz aktualisiert. Wenn Sie Inspector-Variablen oder andere Eigenschaften für eine Instanz eines Prefab geändert haben, können Sie drücken Zurückkehren Um diese Instanz auf dieselbe Konfiguration wie die Fertigdefinition zurückzusetzen.
Eines der ersten Dinge, mit denen ich in Unity zu kämpfen hatte, war, selbst nachdem ich eine Vielzahl von Lernvideos angeschaut hatte, das Navigieren im visuellen 3D-Raum innerhalb des Editors. Ich war zwar ein absoluter Neuling, sich im 3D-Raum zu bewegen, ohne an einen Charakter gebunden zu sein (z. B. beim Spielen eines First- oder Third-Person-Spiels), aber ich fand die Bewegung trotzdem etwas seltsam und kompliziert.
Es ist überhaupt nicht schlimm, wenn man sich erst einmal daran gewöhnt hat, aber es wäre großartig gewesen, wenn ich zum ersten Mal ein wenig mehr Richtung eingeschlagen hätte. Hier sind einige hilfreiche Befehle, um den 3D-Raum des Editors richtig zu navigieren:
Unabhängig davon, ob Sie ein 2D- oder ein 3D-Spiel erstellen, sollten Sie sich mit der sagenhaften Z-Achse vertraut machen. Viele Klassen und Funktionen verwenden die Z-Achse. Auch wenn Sie die Position eines Objekts auf der Z-Achse nicht ändern möchten, müssen Sie sich dessen bewusst sein und wissen, welche Rolle es in den verschiedenen Funktionen spielt.
Die häufigste Erscheinung der Z-Achse, die wirklich nicht vermieden werden kann, ist ihre Verwendung in der Vector3
Klasse. Jedes Objekt in Unity hat ein Verwandeln
Komponente, die die Informationen für Rotation, Position und alle zugehörigen Daten enthält. In der Einheit, tranform.position
ist ein Vector3
, welches die x-, y- und z-Koordinaten des Objekts enthält.
Selbst wenn Ihr Spiel 2D ist, müssen Sie mit der Vector3
Klasse, und Sie müssen daher diesen Parameter kennen. In diesem Fall ist es am einfachsten, entweder den Wert einzustellen z
Parameter zu 0
, oder um es auf das zu setzen aktuell Z-Wert durch Lesen aus transform.position.z
.
Wie bereits erwähnt, werden alle bewegungsbezogenen Informationen in a gespeichert Verwandeln
Komponente. Ah, aber Sie können nicht einfach schreiben transform.position
Vector3
-zumindest nicht in C #. Stattdessen müssen Sie ein neues erstellen Vector3
, Stellen Sie die Werte Ihres ein Vector3
(x
, y
, und z
) und dann eingestellt transform.position
zu deinem neuen Vector3
, wie folgt:
// Wir können nicht in transform.position schreiben, also erstellen wir einen neuen Vector3: Vector3 newPosition; newPosition = new Vector3 (theX, theY, theZ); // Setze transform.position auf das newPosition Vector3-Objekt. transform.position = newPosition;
Dies ist zwar nicht gerade kompliziert, aber es wird definitiv zu einem Haufen Dinge beitragen, die Sie stolpern, wenn Sie sich dessen nicht bewusst sind!
Alles in allem ist nichts darüber besonders fortgeschritten oder sehr technisch. Es sind nur einige Informationen, die Anfängern von Unity beim Lernen oft entgehen. Jeder kann dies alles letztendlich herausfinden, aber es kann unzählige Stunden dauern, um zu debuggen, zu googeln und zu experimentieren, und das ist nicht nötig.
Ich habe mir jedes Tutorial-Video auf der Unity-Site angesehen, und ich kann sagen, dass ich es nicht aufgegriffen habe alles Von den Informationen beim ersten Mal werden viele der oben genannten Informationen einfach nicht erwähnt oder nicht genug Aufmerksamkeit gewidmet, um sie hervorzuheben. Das Lernen alles, was ich gelernt habe, hat mich einige Zeit gekostet, und hoffentlich beschleunigt diese zusammengestellte Liste von Informationen die Lernkurve für zukünftige Anfänger der Unity-Entwicklung.
Auf welche Wachstumsschmerzen sind Sie beim Lernen von Unity gestoßen??