PunchLine Geschrieben 23. Juli 2016 Melden Share Geschrieben 23. Juli 2016 Hallo, Ich habe zzt ein Problem mit der Ui von Unity. Ich nutze dabei ein Text GameObject mit der normalen UI Text Component. public Text errorTxt; errorTxt.text = "Error"; und so verarbeite ich den Code. Jedoch kann ich während das Spiele Teste den Inhalt des Text Objectes nicht ändern Code währe eigntlich richtig. Wo ich den text verändere das liegt in der Update Funktion ich habe jz schon alles Probiert, jedoch funktioniert es nicht und jz hab ich die Befürchtung das es ein Unity Bug ist. Angemerkt wollt ich noch sagen wenn ich ausm Playmode rausgehe dann ändert sich der Inhalt auf den Text was dort eigntl. wirklich drinnen stehen sollte. ich habe nirgendswo anders auf das text Object Zugriff und ich mach damit auch nicht mehr als den Inhalt zu ändern. Ich hoffe ich konnte mein Problem genau erläutern. Würde mich Freuen wenn mir wer von euch da Bescheid geben könnte woran es liegt. Danke PunchLine Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
XTheGhostGamerX Geschrieben 23. Juli 2016 Melden Share Geschrieben 23. Juli 2016 Heyhey PunchLine, ich ändere selber öffters Text in der UI zur Laufzeit. Also geht es. Könntest du bitte mal den ganzen Code von der Metho posten wo "errorTxt" geschrieben, verändert und wieder ausgegeben wird. Nur so ist es etwas schwer den Fehler zu finden. Gruß Ghost Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tristan Geschrieben 23. Juli 2016 Melden Share Geschrieben 23. Juli 2016 Hallo PunchLine Ich habe das Ganze mit folgendem Script getestet: using UnityEngine; using UnityEngine.UI; using System.Collections; public class Errortext: MonoBehaviour { public Text errorTxt; // Use this for initialization void Start () { errorTxt.text = "Hello World"; } } Bei mir funktionierts ohne Probleme. Wichtig ist das du 1) Das Script einem GameObject in der Scene zuordnest und 2) das du dem Script im Inspector das UI Text Object zuordnest. Für weitere Hilfe brauchen wir einen größeren Auszug aus deinem Code. Viele Grüße Dark Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
PunchLine Geschrieben 23. Juli 2016 Autor Melden Share Geschrieben 23. Juli 2016 Hallo PunchLine Ich habe das Ganze mit folgendem Script getestet: using UnityEngine; using UnityEngine.UI; using System.Collections; public class Errortext: MonoBehaviour { public Text errorTxt; // Use this for initialization void Start () { errorTxt.text = "Hello World"; } } Bei mir funktionierts ohne Probleme. Wichtig ist das du 1) Das Script einem GameObject in der Scene zuordnest und 2) das du dem Script im Inspector das UI Text Object zuordnest. Für weitere Hilfe brauchen wir einen größeren Auszug aus deinem Code. Viele Grüße Dark Ich mach es genauso wie du es beschreibst jedoch funktioniert es unter der Start Funktion nicht und in der Update Funktion auch nicht und da ich echt nicht mehr weiter weiß frage ich hier um hilfe using UnityEngine; using UnityEngine.UI; using UnityEngine.Networking; using System.Collections; public class QuickSlotBar : NetworkBehaviour { public Canvas UIQuickSlotBar; public Text timeTxt; private Vector3 QuickSlotBarPos; void Start() { if (!isLocalPlayer) return; if (isLocalPlayer) { timeTxt.text = "0.0"; QuickSlotBarPos = UIQuickSlotBar.transform.position; } } void LateUpdate() { if (!isLocalPlayer) return; if (isLocalPlayer) { UIQuickSlotBar.transform.position = QuickSlotBarPos; if (transform.GetComponent<AbilitySystem>().time > 0.1f) { timeTxt.text = ">0.1:"; } } } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 23. Juli 2016 Melden Share Geschrieben 23. Juli 2016 Du hast aber schon das Skript auf ein GameObject gezogen und das gewünschte Text-Objekt in dessen Inspektor hinzugefügt? Da du da ja ein NetworkBehaviour hast, ist isLocalPlayer vielleicht einfach false? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
PunchLine Geschrieben 23. Juli 2016 Autor Melden Share Geschrieben 23. Juli 2016 Du hast aber schon das Skript auf ein GameObject gezogen und das gewünschte Text-Objekt in dessen Inspektor hinzugefügt? Da du da ja ein NetworkBehaviour hast, ist isLocalPlöayer vielleicht einfach false? Ja natürlich habe ich es auf ein GO gezogen. Nein ist es nicht weil ichs mit Debug.Log(""); kontrolliert habe. hmm ich komme einfach nicht weiter und meine Lust scheint zu verschwinden oO Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 23. Juli 2016 Melden Share Geschrieben 23. Juli 2016 Na, wenn dir bei sowas schon die Motivation flöten geht, wirst du nicht sehr weit kommen. Es ist jedenfalls kein Bug bekannt, dass das einfach nicht funktioniert. Du musst also mal schauen woran das liegen kann. Und "vergessen, das Skript irgendwo raufzuziehen" stimmt halt in 10% der Fälle. Darum die Nachfrage. Fehlermeldungen hast du offenbar auch keine. In dem Fall kann noch GetComponent<AbilitySystem>().time niemals über 0.1 sein. Hast du ansonsten das Debug.Log mal direkt vor die Zuweisung des Texts gesetzt? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
PunchLine Geschrieben 23. Juli 2016 Autor Melden Share Geschrieben 23. Juli 2016 Na, wenn dir bei sowas schon die Motivation flöten geht, wirst du nicht sehr weit kommen. Es ist jedenfalls kein Bug bekannt, dass das einfach nicht funktioniert. Du musst also mal schauen woran das liegen kann. Und "vergessen, das Skript irgendwo raufzuziehen" stimmt halt in 10% der Fälle. Darum die Nachfrage. Fehlermeldungen hast du offenbar auch keine. In dem Fall kann noch GetComponent<AbilitySystem>().time niemals über 0.1 sein. Hast du ansonsten das Debug.Log mal direkt vor die Zuweisung des Texts gesetzt? Doch ist habs getestet und im Inspector angeguckt. hab die Time mit Debug.Log ausgegeben. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 23. Juli 2016 Melden Share Geschrieben 23. Juli 2016 Dann hast du vermutlich das falsche Text-Objekt zugewiesen. Baue dein Problem nochmal in einem Minimalbeispiel nach oder bastele den Teil der Szene neu. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
PunchLine Geschrieben 23. Juli 2016 Autor Melden Share Geschrieben 23. Juli 2016 Also ich habe das Problem jz gelöst indem ich das Script auf MonoBehaviour wieder geändert habe und dann mit ner If schleife alles abgefragt habe. Was ich jetzt aber auch glaube wenn man aus der Update Schleife auf eine Methode mit der [Client] zurück weißt dann würde das auch funktionieren. Also ich danke euch mal vorerst jz klappts und ich werde euch dann wenn ich das morgen teste berichten wie es genau Funktioniert Danke und Grüße euch noch ein schönes Wochenende Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 23. Juli 2016 Melden Share Geschrieben 23. Juli 2016 http://if-schleife.de/ Der Code würde mich aber mal interessieren, wie er jetzt aussieht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MaZy Geschrieben 24. Juli 2016 Melden Share Geschrieben 24. Juli 2016 http://if-schleife.de/ Der Code würde mich aber mal interessieren, wie er jetzt aussieht. Oder if-Bedingungen Dir wurde schon gut geholfen und wollte noch was sagen. if (!isLocalPlayer) return; if (isLocalPlayer) { } Das ist doppelt gemoppelt -.- die zweite Abfrage brauchst du gar nicht mehr. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
DanCopper Geschrieben 6. August 2016 Melden Share Geschrieben 6. August 2016 Oder if-Bedingungen Dir wurde schon gut geholfen und wollte noch was sagen. if (!isLocalPlayer) return; if (isLocalPlayer) { } Das ist doppelt gemoppelt -.- die zweite Abfrage brauchst du gar nicht mehr. Das programmiere ich auch oft so, anstelle von "if - else", um Symetrie zu verdeutlichen und die Lesbarkeit zu verbessern. Kann man sich drüber streiten ob das ok ist Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 6. August 2016 Melden Share Geschrieben 6. August 2016 Ist halt eine unnötige if-Abfrage mehr. Nicht, dass wir heutzutage nicht genug Rechenpower für solche Späße haben, aber derartige Unnötigkeit ist schon irgendwie hässlich Mal davon abgesehen, dass du z.B. bei Shaderprogrammierung mit so einem Stil auch heute noch mächtig auf die Nase fliegen kannst mit sowas. Alternativvorschlag: if(bedingung) Foo(); else //(!bedingung) Bar(); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.