Jump to content
Unity Insider Forum

UI Silder ansprechen.


Recommended Posts

Hallo,

 

ich habe da mal wieder eine frage ich würde gerne mit dem neuen UGUI den Slinder via Code ansprechen wie kann ich das am besten tun mein momentaner Code sieht so aus.

 

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class PlayerHUD : MonoBehaviour {
public Slider HealthImage;
public Slider ManaImage;
int health;
int healthmax;
int mana;
int manamax;
int xp;
int xpmax;
int level;

string health_prop = "health";
string health_max_prop = "health-max";
string mana_prop = "mana";
string mana_max_prop = "mana-max";
string xp_prop = "experience";
string xp_max_prop = "experience-max";
string level_prop = "level";
public Slider Health;
public float healthBarLength;

// Use this for initialization
void Start () {  
 // Register for
 ClientAPI.GetPlayerObject().RegisterPropertyChangeHandler(health_prop, HealthHandler);
 ClientAPI.GetPlayerObject().RegisterPropertyChangeHandler(health_max_prop, HealthMaxHandler);
 ClientAPI.GetPlayerObject().RegisterPropertyChangeHandler(mana_prop, ManaHandler);
 ClientAPI.GetPlayerObject().RegisterPropertyChangeHandler(mana_max_prop, ManaMaxHandler);
 ClientAPI.GetPlayerObject().RegisterPropertyChangeHandler(xp_prop, XpHandler);
 ClientAPI.GetPlayerObject().RegisterPropertyChangeHandler(xp_max_prop, XpMaxHandler);
 ClientAPI.GetPlayerObject().RegisterPropertyChangeHandler(level_prop, LevelHandler);

 // The player may have changed scenes, but their stats were not sent back down, so let's take a look
 if (ClientAPI.GetPlayerObject() != null) {
  if (ClientAPI.GetPlayerObject().PropertyExists(health_prop)) {
   health = (int)ClientAPI.GetPlayerObject().GetProperty(health_prop);
  }
  if (ClientAPI.GetPlayerObject().PropertyExists(health_max_prop)) {
   healthmax = (int)ClientAPI.GetPlayerObject().GetProperty(health_max_prop);
  }
  if (ClientAPI.GetPlayerObject().PropertyExists(mana_prop)) {
   mana = (int)ClientAPI.GetPlayerObject().GetProperty(mana_prop);
  }
  if (ClientAPI.GetPlayerObject().PropertyExists(mana_max_prop)) {
   manamax = (int)ClientAPI.GetPlayerObject().GetProperty(mana_max_prop);
  }
  if (ClientAPI.GetPlayerObject().PropertyExists(xp_prop)) {
   xp = (int)ClientAPI.GetPlayerObject().GetProperty(xp_prop);
  }
  if (ClientAPI.GetPlayerObject().PropertyExists(xp_max_prop)) {
   xpmax = (int)ClientAPI.GetPlayerObject().GetProperty(xp_max_prop);
  }
  if (ClientAPI.GetPlayerObject().PropertyExists(level_prop)) {
   level = (int)ClientAPI.GetPlayerObject().GetProperty(level_prop);
  }
 }
} 

// Update is called once per frame
void Update () {
}
public void HealthHandler(object sender, PropertyChangeEventArgs args) {
 health = (int)ClientAPI.GetPlayerObject().GetProperty(health_prop);
}

public void HealthMaxHandler(object sender, PropertyChangeEventArgs args) {
 healthmax = (int)ClientAPI.GetPlayerObject().GetProperty(health_max_prop);
}

public void ManaHandler(object sender, PropertyChangeEventArgs args) {
 mana = (int)ClientAPI.GetPlayerObject().GetProperty(mana_prop);
}

public void ManaMaxHandler(object sender, PropertyChangeEventArgs args) {
 manamax = (int)ClientAPI.GetPlayerObject().GetProperty(mana_max_prop);
}

public void XpHandler(object sender, PropertyChangeEventArgs args) {
 xp = (int)ClientAPI.GetPlayerObject().GetProperty(xp_prop);
}

public void XpMaxHandler(object sender, PropertyChangeEventArgs args) {
 xpmax = (int)ClientAPI.GetPlayerObject().GetProperty(xp_max_prop);
}

public void LevelHandler(object sender, PropertyChangeEventArgs args) {
 level = (int)ClientAPI.GetPlayerObject().GetProperty(level_prop);
}
}

 

Hoffe mir kann da wer auf die Sprünge helfen..

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nein werden alle gebraucht es ist MMORPG. Hätte ich glaube ich erwähnen sollen :-( jede Wiederholung die du sendest wird vom Server verwaltet.

 

Aber klappt jetzt danke dir nur er zeigt mir das nicht ganz an mit dem UGUI keine ahnung warum noch net aber in Scene selber funtzt es nur auf der Camera wird es jetzt noch nicht angeben...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das macht überhaupt kein Sinn, ich glaube du verstehst gar nicht was ich meine.

Nein werden alle gebraucht es ist MMORPG. Hätte ich glaube ich erwähnen sollen :-( jede Wiederholung die du sendest wird vom Server verwaltet.

 

Aber klappt jetzt danke dir nur er zeigt mir das nicht ganz an mit dem UGUI keine ahnung warum noch net aber in Scene selber funtzt es nur auf der Camera wird es jetzt noch nicht angeben...

 

https://de.wikipedia...repeat_yourself

Teile des Sourcecodes den du gepostet hast wiederholen sich ständig, wie Mark schon probierte dir zu erklären @Red Punch. Den Aufruf von ClientAPI.GetPlayerObject() könnte man in einer Methode zusammenfassen und schön abstrakt mit Parametern gestalten, sodass dein Code übersichtlicher und einfacher zu bearbeiten ist. Hat nichts mit der direkten Funktion dieser Aufrufe zutun.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...