Jump to content
Unity Insider Forum

UI Text Bug


Recommended Posts

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

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

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

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

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

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

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

  • 2 weeks later...

Oder if-Bedingungen :D

 

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

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

Archiviert

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

×
×
  • Neu erstellen...