Kursinhalt
Kampfspiel in Unity
Kampfspiel in Unity
Spielerinteraktion mit Objekten
Schnittstellen
Eine Schnittstelle ist wie ein Vertrag, der eine Reihe von Methoden und Eigenschaften definiert, die eine Klasse implementieren muss. Sie ermöglicht es Ihnen, festzulegen, welche Funktionalität eine Klasse haben sollte, ohne die Implementierungsdetails bereitzustellen.
Beispiel
Angenommen, Sie erstellen ein Spiel in Unity und möchten verschiedene Waffentypen wie Schwerter, Gewehre und Bögen erstellen. Sie könnten eine Schnittstelle namens IWeapon
erstellen, die die grundlegenden Aktionen umreißt, die jede Waffe ausführen können sollte, wie Attack()
und Reload()
.
Nun muss jede Klasse, die in Ihrem Spiel als Waffe betrachtet werden soll, dieses Interface implementieren. Zum Beispiel könnten Sie eine Sword
-Klasse oder eine Gun
-Klasse haben.
Durch die Verwendung von Interfaces können Sie sicherstellen, dass alle Ihre Waffen die gleiche grundlegende Funktionalität (Attack()
und Reload()
) haben, aber jede kann ihre eigene einzigartige Implementierung haben. Dies macht Ihren Code modularer und einfacher zu verwalten, insbesondere wenn Ihr Spiel an Komplexität zunimmt.
Dies ist das Interface, das wir in unserem Spiel verwendet haben, um die Feinde als Objekte zu markieren, die angegriffen werden können.
TryGetComponent
Wichtige Punkte
raycastHit
: Dies bezieht sich auf das Ergebnis eines Raycast-Treffers. Wenn Sie in Unity einen Strahl werfen, erhalten Sie Informationen darüber, welches Objekt getroffen wurde;.TryGetComponent(out IGetAttacked getAttacked)
: Diese Methode versucht, eine bestimmte Komponente aus demGameObject
-Transform zu erhalten. Dasout
-Schlüsselwort wird verwendet, um die abgerufene Komponente der VariablengetAttacked
zuzuweisen, falls erfolgreich. Wenn nicht, wird alles unter diesemif
ignoriert;IGetAttacked
: Dies ist der Schnittstellentyp, den der Code versucht, aus demGameObject
abzurufen. Es gibt an, dass dasGameObject
eine Komponente haben muss, die dieIGetAttacked
-Schnittstelle implementiert.
Wenn das GameObject
, das vom Raycast getroffen wird, eine Komponente hat, die die IGetAttacked
-Schnittstelle implementiert, wird die Variable getAttacked
nach der Ausführung dieser Zeile eine Referenz auf diese Komponente halten. Andernfalls wird getAttacked
der Wert null zugewiesen.
Danke für Ihr Feedback!