Verknüpfungen im Inspector
Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 8 von 60.
Eine Schaltfläche kann auch im Inspector verdrahtet werden, ganz ohne AddListener. Die Liste On Click () der Schaltfläche ist anfangs leer. Mit dem + fügst du eine Zeile hinzu; ziehe das Objekt, das das Skript enthält, in das Objektfeld der Zeile. Im Funktions-Dropdown werden die Komponenten dieses Objekts samt ihren öffentlichen Methoden angezeigt. Wähle Jukebox > NextTrack, und bei jedem Klick wird diese Methode aufgerufen:
public class Jukebox : MonoBehaviour
{
public string[] tracks;
private int current;
public void NextTrack()
{
current = (current + 1) % tracks.Length;
Debug.Log("Now playing: " + tracks[current]);
}
}Im Dropdown werden Methoden angezeigt, die public sind, void zurückgeben und keinen Parameter oder einen Parameter vom Typ int, float, string, bool oder Object entgegennehmen, dessen Wert du in der Zeile festlegst. Eine private NextTrack wird nicht angezeigt und kann daher nicht ausgewählt werden. Die Zeile speichert die Methode anhand ihres Namens: Benennst du NextTrack in SkipTrack um, zeigt die Zeile <Missing Jukebox.NextTrack> an, und Klicks bewirken nichts, ohne dass in der Console ein Fehler erscheint.
Zeilen im Inspector eignen sich für Schaltflächen, die in der Szene platziert sind: Alle im Team können sehen und ändern, was eine Schaltfläche aufruft, ohne ein Skript zu öffnen. AddListener im Code eignet sich für Schaltflächen, die während des Spiels erstellt werden, sowie für Aufrufe, bei denen ein Wert aus einer Variablen übergeben wird. Außerdem erkennt der Compiler dort, wenn eine Methode umbenannt wurde. Listener, die im Code hinzugefügt werden, erscheinen nie in der Liste On Click (), daher ruft eine Schaltfläche, die auf beide Arten verdrahtet ist, beide auf.
Aufgabe
EinfachLass die drei Tasten der Zugbrücke in Drawbridge.cs funktionieren.
- Die Zeile „On Click ()“ jeder Taste ruft
Raise,LoweroderToggleLampauf. BenenneLowerBridgeinLowerum. - Schreibe
public void Raise():bridge.localRotationwird um 70 Grad um die x-Achse gedreht, und instatusTextstehtBridge: up. - Schreibe
public void ToggleLamp(): Die Methode schaltetwarningLampein, wenn sie ausgeschaltet ist, und aus, wenn sie eingeschaltet ist.
Drücke „Spielen“: Jede Taste erfüllt ihre Aufgabe. Drücke dann „Prüfen“.
Probier es selbst
using UnityEngine;
using TMPro;
public class Drawbridge : MonoBehaviour
{
public Transform bridge;
public TMP_Text statusText;
public GameObject warningLamp;
public void LowerBridge()
{
bridge.localRotation = Quaternion.Euler(0f, 0f, 0f);
statusText.text = "Bridge: down";
}
}
Alle Lektionen in Echte Spiele entwickeln
1Text auf dem Bildschirm
Canvas und TextPunktestand anzeigenZahlen formatierenEin Countdown-TimerRückblick: Tachometer2Buttons und Bildschirme
Buttons und onClickLambdasVerknüpfungen im InspectorPanels ein- und ausblendenGesundheitsbalkenRückblick: Upgrade-Shop5Speichern mit PlayerPrefs
Eine Zahl speichernMit einem Standardwert ladenHöchstpunktzahlEinstellungen speichernRückblick: Münzen auf der BankÜbe selbstständig: Unity-Playground