Jump to content
Unity Insider Forum
SirTreffNix_Dev

UI Elemente aktualisieren

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...