
Guten Tag, lieber Chabarowsk!
Jeder Entwickler möchte sein eigenes Spiel schneller erstellen, aber wie geht das? Dieser Artikel beschreibt die grundlegenden Fähigkeiten zur Verkürzung der Entwicklungszeit in einer Unity-Umgebung.
Fähigkeit Nr. 1 - Arbeiten Sie mit der Projektstruktur
Um die Ordnung im Projekt aufrechtzuerhalten, müssen Sie dessen Struktur verstehen. Es kann wie folgt dargestellt werden:
- Modelle - speichert alle im Projekt verwendeten Modelle
- Prefabs - speichert alle Modellvorlagen
- Texturen - speichert alle Texturen
- Materialien - speichert alle Materialien
- Skripte - speichert alle Skripte
- Sounds - speichert alle Sounds
- Animationen - speichert alle Animationen
Wenn Sie komplexe Objekte haben, z. B. einen Charakter, wird für ihn ein separater Ordner erstellt, in dem die obige Struktur wiederholt wird.
Struktur des ZeichenordnersEin anderer Ansatz wäre, die oben beschriebenen Ordner zu erstellen und die Teile des Objekts in jedem Ordner zu platzieren, dh die folgende Struktur wird für die Charakteranimation verwendet.
Struktur des AnimationsordnersFähigkeit Nr. 2 - Arbeiten mit einer Hierarchie von Objekten in der Szene
Um die Arbeit mit Gruppen identischer Objekte zu vereinfachen, können sie zu Gruppen zusammengefasst werden, in denen ein leeres Objekt als übergeordnetes Objekt fungiert.
Dies hilft dabei, das Licht im gesamten Standort oder in Innenräumen einfach auszuschalten. Finden Sie den Standort aller Objekte heraus.
Jedes Element wird relativ zu dem aufgerufen, was es ist. Am Ende wird ein Postfix des übergeordneten Objekts hinzugefügt. Ein Goldbarren in einer Höhle heißt beispielsweise "goldBar_cv1", wobei cv1 Höhle1 bedeutet, und ein Baum im Wald "tree_frt1", wobei frt1 Wald1 bedeutet. Für Postfix werden der erste Buchstabe des Wortes, der erste Buchstabe der zweiten Silbe und der letzte Buchstabe des Wortes verwendet.
Ein Beispiel für eine Hierarchie von Objekten in einer SzeneFähigkeit Nr. 3 - Arbeiten mit visueller Präsentation
Unity hat 3 Hauptlichtquellen:
- Richtungslicht - ein Analogon der Sonne
- Punktlicht - analog zu einer Glühbirne
- Spotlight - Analogon einer Taschenlampe
Wenn es Licht gibt, muss es eine Lichtquelle geben. Zum Beispiel kann es in einer Höhle nicht hell sein, wenn der Charakter keine Fackel hat (für eine Fackel ist Punktlicht geeignet).
Verwenden Sie PostProcessing, um Effekte anzuwenden.
Die Szene ohne Nachbearbeitung
NachbearbeitungsszeneUPD von
thenonsense :
Neben visuell dargestellten Lichtquellen gibt es auch globale Lichteinstellungen: eine Registerkarte oben im Fenster , das Beleuchtungselement und das Unterelement Einstellungen . Dort können Sie beispielsweise die Beleuchtung der Umgebung straffen, eine Skybox installieren und Nebel hinzufügen. Hier müssen Sie nachsehen, ob Sie sich die Frage gestellt haben: "Alle Lichtquellen gelöscht, aber auf der Bühne ist alles das gleiche Licht wie tagsüber." Übrigens können Sie diese Einstellungen bereits während der Ausführung des Spiels im Editor aufrufen, sodass Sie die Änderungen sofort im Handumdrehen sehen können. Nach dem Schließen des Spielemodus kehren die Einstellungen jedoch in den Zustand vor Beginn des Spieletests zurück. Sie müssen also wieder in dieses Fenster klettern und die Werte anpassen. Ein nützliches Detail - Wenn Sie beispielsweise die Beleuchtungsfarbe ändern möchten (Umgebungsfarbe in der Gruppe Umgebungsbeleuchtung), achten Sie auf dem Bedienfeld mit der Palette auf das hexadezimale Element. Die Nummer der aktuellen Farbe wird im Fenster angezeigt. Sie können sie kopieren und später in dasselbe Feld einfügen wenn der Spielemodus ausgeschaltet ist. Der gleiche Trick ist nützlich, um die Farbe des Nebels anzupassen und so weiter.
In ähnlicher Weise können Sie im Spielmodus einige Parameter von Objekten über den Editor ändern - die Werte variabler Skripts werden in die Sichtbarkeitszone verschoben, das Rendern des Objektnetzes aktivieren / deaktivieren usw. Die Hauptsache ist, sich nicht mitreißen zu lassen, um etwas nicht zu zerbrechen. Nach dem Ausschalten des Spielmodus werden die geänderten Werte wiederhergestellt. Dies gilt nicht für einige einzelne Elemente. Wenn Sie beispielsweise die Geländetextur im enthaltenen Spielmodus bearbeitet haben, werden die Änderungen gespeichert.
Fähigkeit Nr. 4 - Arbeiten Sie mit der Kamera
Müssen Sie ein Objekt auf der Bühne finden? Klicken Sie zweimal auf den Namen des Objekts in der Hierarchie.
Willst du von 1 Person über die Bühne fliegen? Halten Sie RMB gedrückt und bewegen Sie sich mit den WASD-Tasten, Beschleunigung verschieben.
Möchten Sie die Szene aus verschiedenen Blickwinkeln sehen? Nutzen Sie Gizmos (Gizmos).
Gizmo LageFähigkeit Nr. 5 - Arbeiten Sie mit Objekten
Möchten Sie der Szene einen Charakter hinzufügen? Fügen Sie die Komponenten RigidBody und CapsuleCollaider hinzu. RigidBody teilt der Engine mit, dass die Festkörperphysik auf dieses Objekt angewendet werden soll.
Möchten Sie die Kollision eines Charakters mit einem Objekt überprüfen? Fügen Sie die MeshCollaider-Komponente zum Objekt hinzu und überprüfen Sie im Zeichenskript in der OnCollisionEnter-Funktion das Tag des Objekts, auf das das Zeichen gestoßen ist.
Ein Beispiel für die Implementierung der Überprüfung der Kollision eines Zeichens mit einem Objektprivate void OnCollisionEnter(Collision collision) { switch (collision.gameObject.tag) { case "Moneys": Destroy(collision.gameObject);
UPD von
thenonsense :
Es ist nicht immer notwendig, dass ein Charakter einen starren Körper verwendet. Die Verwaltungsmethoden können unterschiedlich sein. Ein Collider für einen Charakter ist jedoch fast immer erforderlich, es sei denn, Sie berechnen Kollisionen auf schwierigere Weise. Unity verfügt auch über mehrere spezifische Controller / Collider. Lesen Sie die Dokumentation besser, um sie genauer zu verstehen. Es ist jedoch besser, mit einfachen Beispielen auf YouTube zu beginnen.
Was die Objekte betrifft, auf die der Charakter trifft. Mesh Collider sollte normalerweise an Objekten aufgehängt werden, deren komplexe Form auf die eine oder andere Weise wichtig ist, damit Sie die Kollision berücksichtigen können. Wenn es sich nur um eine Schaltfläche handelt, ist es besser, mit einfacheren Collidern wie Box Collider auszukommen. Darüber hinaus müssen Sie möglicherweise ein einfacheres, unsichtbares Kollisionsgitter für besonders komplexe 3D-Objekte erstellen und den Mesh Collider daran und nicht am sichtbaren Objekt selbst aufhängen.
Bei Schaltflächencollidern ist zu beachten, dass Sie in ihrer Komponente des Colliders das Kontrollkästchen Is Trigger aktivieren müssen, damit das Skript das Klickereignis verarbeiten kann. Eine Starrkörperkomponente muss allen Fässern, Kisten und anderen Objekten zugewiesen werden, die einfach auf physikalische Weise schön auf Kollisionen reagieren und unter den Einfluss der Schwerkraft fallen müssen.
Fähigkeit Nr. 6 - Modelle importieren
Betrachten Sie die Vorgehensweise am Beispiel des Importierens eines Modells aus Blender. Es wird davon ausgegangen, dass Sie bereits einen Scan durchgeführt, eine Textur angewendet oder Materialien ausgewählt haben.
- Positionieren Sie das Modell in Nullkoordinaten (Mittelpunkt relativ zu den Achsen).
- Setzen Sie Scale auf Eins
- Entfernen Sie unnötige Gegenstände (Kamera, Lichtquelle).
- Speichern Sie das Modell im .fbx-Format
- Datei an Unity übertragen
- In Ordner ziehen - Modell zu Modell, Material zu Material usw.
- Modellfertigteil erstellen
- Arbeiten Sie weiter mit Fertighäusern
UPD von
thenonsense :
Mixer
Bitte beachten Sie, dass Mischermaterialien, die dem Modell zugewiesen sind, in vereinfachter Form übertragen werden und die Materialliste überladen.
Sie müssen in Blender überhaupt keine komplexe Entwicklung und Texturierung durchführen. Eine einfachere Möglichkeit besteht darin, alle Elemente des Modells durchzugehen und das Datenelement im Fenster rechts auszuwählen. Dies ist ein Symbol in Form eines Dreiecks mit drei Punkten zwischen den Elementen Modifikatoren (Schraubenschlüssel) und Material (rosa Kugel). Klicken Sie darin neben dem UV-Karten- Diagramm auf +. Es wird ein automatischer Scan mit einem Schachball-Symbol angezeigt. Dies muss für jedes Element des Modells erfolgen und erst dann exportiert werden. Dann ist es bereits in Unity möglich, Material mit einer Fliesentextur auf dieses Teil aufzutragen. Wenn dies nicht erfolgt, wird das Teil vom Material nur einfarbig lackiert. (Wenn Sie das Modellelement später deformiert haben, verwerfen Sie den Sweep und weisen Sie ihn neu zu, damit er nicht gedehnt wird.)
Wenn Ihr Modell aus verschiedenen Elementen besteht, können Sie bereits in Unity einzelne Elemente Ihres Modells verschieben oder deaktivieren. Dies kann in verschiedenen Situationen nützlich sein.
So strukturieren Sie ein Modell auf einfache Weise.
Zuerst benötigen Sie 512 bis 512 Kacheltexturen. Fügen Sie diese auf dieselbe Weise wie das 3D-Modell über Import New Asset hinzu (denken Sie daran, dass ein geeigneter Ordner ausgewählt werden sollte). Gleichzeitig setzen Sie rechts im Inspektor an der hinzugefügten Textur im Standardfenster den Parameter Max. Größe auf 512. Klicken Sie anschließend auf Übernehmen . Jetzt ist die Textur bereit, sie dem Material hinzuzufügen, oder sie kann beispielsweise terranisch gestrichen werden. Achten Sie auf den allerersten Punkt - Texturtyp, jetzt befindet er sich im Standardmodus. Wenn Sie jedoch eine normale Karte, ein Bild für ein durchscheinendes Sprite usw. laden müssen, müssen Sie dort die entsprechende Einstellung vornehmen.
Als nächstes müssen wir das Material erstellen. Wir gehen wieder zum Menü oben - Assets , die Dropdown-Liste Erstellen , Material (vergessen Sie auch hier nicht, dass das Material in dem aktuell ausgewählten Ordner erstellt wird). Sie fahren im Namen des Materials und öffnen im Inspektor das Albedo- Element (bis wir bei anderen Parametern anhalten, aber das Prinzip ist ähnlich), wo Sie Ihre zuvor geladene Textur suchen und zuweisen. In der Nähe gibt es ein Farbfenster, das Ihre Textur zusätzlich tönen kann, sowie Schieberegler für Metallic und Glätte, um Blendung oder Mattheit hinzuzufügen. Der Parameter Kachelgröße ist ebenfalls nützlich. Er befindet sich einige Zeilen weiter unten.
Nachdem das Material erstellt wurde, können Sie es greifen und direkt auf das Modell oder seine Elemente werfen. Verpassen Sie es einfach nicht, andernfalls malen Sie nicht das, was Sie benötigen.
Vergessen Sie nicht, dass dieselbe Textur in verschiedenen Materialien verwendet werden kann. Zum Beispiel mit Verunreinigungen unterschiedlicher Farben und / oder unterschiedlicher Fliesengrößen.
Fertighäuser.
Normalerweise wird das Fertighaus wie folgt ausgeführt: Sie haben das Objekt in die Szene gezogen, dann seinen Namen in das Hierarchiefenster eingehängt und in den Ordner gezogen. Dann erscheint ein Fertighaus basierend auf dem Objekt. Im Inspektor hat das Fertighaus ein blaues Würfelsymbol und wird unter dem Tag Fertighaus signiert.
Sie müssen jedoch nicht sofort alles mit Fertighäusern erledigen. Sie können das Objekt auf die Szene werfen, es dann mit Copy-Paste klonen und so testen. Wenn alles zu Ihnen passt, übertragen Sie das Objekt in das Fertighaus. Wenn nicht beispielsweise ein Fehler im Modell aufgetreten ist, löschen Sie die Kopien aus der Szene, das Modell selbst aus dem Ordner, korrigieren Sie es im 3D-Paket und importieren Sie es erneut.
Sie können auch einige neue untergeordnete Elemente in das Fertighaus auf der Bühne schieben. Sie werden jedoch nicht vollständig Teil davon, dh sie wirken sich nicht auf andere Kopien dieses Fertighauses aus, bis Sie im Inspektor in der Zeile mit dem Namen Fertighaus auf die Schaltfläche Übernehmen klicken.
Fähigkeit Nr. 7 - Implementierung der Logik
Vermeiden Sie kostspielige Operationen. Ein Beispiel ist die Bestimmung der Entfernung zu einem Objekt.
Beispiel für einen kostspieligen Betrieb using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Transform other; void Example() { if (other) {
Beispiel für eine schnellere Implementierung using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Transform other; public float closeDistance = 5.0f; void Update() { if (other) { Vector3 offset = other.position - transform.position;
Lesen Sie hier mehr über teure Operationen.
Fazit
Die oben genannten Fähigkeiten reduzieren die Zeit sowohl während der Entwicklung als auch während der Projektunterstützung erheblich.
Wenn Sie der Meinung sind, dass einige Themen oberflächlich aufgedeckt werden, schreiben Sie bitte in den Kommentaren dazu ausführlicher.