Jump to content
Unity Insider Forum

UI Elemente aktualisieren


SirTreffNix_Dev

Recommended Posts

Hallo zusammen,

ich stelle mir aktuell die Frage was sinvoller oder effektiver ist, wenn es um das aktualisieren von UI Elementen geht.

Ich möchte im Ingame UI unterschiedliche Werte meines Players anzeigen lassen (Health, Speed usw.)

Ich frage mich jetzt aber ob ich auf das Canvas eine Komponente lege, die die PlayerStats abruft oder ob ich in den PlayerStats in Update auch das UI aktualisiere.

Je nachdem muss ich ja entweder dem UI die PlayerStats Komponente bekannt machen oder eben den PlayerStats die entsprechenden UI Komponenten.

Aus meiner Überlegung denke ich, dass es einfacher ist eine Komponente am UI zu hinterlegen, dass im Update die PlayerStats abfrägt. Hierdurch muss ich "nur" PlayerStats im UI bekannt machen und bin dann flexibler welchen Wert ich wo anzeige. Oder gibt es elegantere Lösungen?

Aktuell stelle ich mir in etwa sowas für das UI Script vor:
 

public PlayerStats playerStats;

public Text playerHealth;
public Text playerSpeed;

void Update()
{
	playerHealth.Text = playerStats.Health;
	playerSpeed.Text = playerStats.Speed;
}

 

Meine Überlegung hierbei ist auch, dass die Komponente die das UI aktualisieren soll auch zum UI gehört. Aber eventuell ist es ja auch geschickter UI Elemente immer da zu aktualiseren wo etwas mit den entsprechenden Werten passiert. Also z.B. den PlayerHealth Text aktualisieren in der Komponente die z.B. Schaden verursacht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du kannst Events erstellen. Beispiel mit UnityAction oder UnityEvents kannst du die Werte übergeben.

Wenn du z.B. Trigger oder Collision benutzten tust um Health zu verändern, kannst du da dann per event.Invoke(health) machen oder so. In deinen UI Script würde dann nur OnHealthChanged(float health) funktion stehen und da drinne verändert man den Health.

Ich habe da meist ein DamageSystem Script, wo ich solche Dinge vorbereite. Die UI Scripte können dann die events von da aus subscriben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen Dank schon mal für die Antwort.

Mit Events habe ich tatsächlich noch nicht gesehen in diesem Zusammenhang. Hab mir gestern mal mehrere Lösungswege zu der Anforderung angesehen, unter anderem Unity Learn Resourcen aber alle haben im Endeffekt die UI Elemente Public bereitgestellt und auf die z.B. PlayerHealth Komponente "gezogen".

Generell bin ich aber, so vermute ich, mit der Events Lösung flexibler. Werde ich mir ansehen und mal testen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...