Unity C# public bool auslesen?
Hallo ich habe gerade in Script 1 ein public bool erstellt und jetzt habe ich ein 2. Script das auf dieses public bool reagieren soll. Das erste Script ist in meinem Player und das 2. Script in der Healthbar und diese Healthbar ist an der camera und die camera an dem player also hängt alles zusammen.
Wie kann ich es machen das das 2. Script auf das bool vom ersten reagiert?
Danke im vorraus ich hoffe man kann es verstehen.
2 Antworten
Eine einfache Lösung ist es, dass man für die visuelle Komponente (Healthbar) in jeder Frame den Wert (Health) neu abfragt. Klingt erstmal schrecklich ineffizient, bei wenigen Werten ist das aber kaum ein Problem und sehr schnell implementiert. In der Unreal Engine 4 zum Beispiel wird das auch so gemacht.
Wenn du die Anzeige von dem Wert nur dann aktualisieren möchtest, wenn sich der Wert ändert, musst du ein Observer-Oservable-Design implementieren. Für C# findest du in Observer Design Pattern ein allgemeines Beispiel, in Unity gibt es dafür UnityEvents. Ein Beispiel, wenn auch stark modifiziert, findest du beispielsweise unter Architect for Events.
Die 2 Scripts werden ja als Komponenten dargestellt im Editor. Wenn du den Status vom Boolean von einem Skript in einem anderem Skript überprüfen möchtest, würde ich dir GetComponent empfehlen https://docs.unity3d.com/ScriptReference/GameObject.GetComponent.html