Jump to content
Unity Insider Forum

IsNullOrEmpty


Kojote

Recommended Posts

Grüße!

Mal ne Verständnissfrage zu IsNullOrEmpty. Ich habe eine Methode zum starten des Spiels, wenn der Spieler das Spiel starten will, soll abgefragt werden, ob ein Spielername eingetragen wurde. Wenn nicht, soll der Spielstart verhindert werden:

        public void EnterWorld() {
            if (string.IsNullOrEmpty(TMPPlayerNameText.text)) {
                LD_SP_Menue_Notification_Main_Menue.Instance.CallNotification();
                return;
            }

          	// Lade das Spiel
        }

So, nutze ich es so, wie ich es denke, ist es ihm egal, ob ein Name drin steht oder nicht, er starte das Spiel. Füge ich vor IsNullOrEmpty den Negativoperatpr hinzu, bricht er den Start ab, aber ich kann auch einen Namen eintragen, dann startet das Spiel auch nicht und meint immer noch, dass kein Name drin wäre.

Habt ihr ne Idee, woran es liegt?

Grüße von Kojote

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum nutzt du eigentlich immer irgendwelche Befehle, von denen du eigentlich gar nicht weißt, wie sie funktionieren.
Warum nutzt du nicht den herkömmlichen Weg, wo du auch weißt, was passiert.

if(TMPPlayerNameText.text=="" || TMPPlayerNameText.text==null)

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Weil man ma was neues probieren muss, um sich weiter zu entwickeln und ansonsten nur auf der Stelle herum trampelt? ;)

Die Definition hab ich schon gelesen und so kompliziert nun nicht zu verstehen:

Zitat

Gibt an, ob die angegebene Zeichenfolge null oder eine leere Zeichenfolge ("") ist.

true, wenn der value-Parameter null oder eine leere Zeichenfolge ("") ist; andernfalls false.

Löst aber nicht die Frage, warum das if-Statement nicht funktioniert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Jomnitech Ne, muss er nicht. Die Textkomponente eines UI Elementes ist ein Sting .

@Kojote 
Dass du dich weiter entwickeln willst ist toll!
Aber du gehst da komplett falsch ran!

Du gehst davon aus, dass dein If Statement nicht funktioniert. Wieso denn? Hast du denn einfach mal mit nem Print oder nem Debug.Log dir etwas  ausgeben lassen?
Sowas wie:

if (string.IsNullOrEmpty(TMPPlayerNameText.text)) {
  print("Textfeld ist leer oder null");
  return;
}
else{
  print(TMPPlayerNameText.text + " lautet der Inhalt");
}

Ich denke nicht.

Genauso hättest du auch einfach ersteinmal die ganz normale Abfrage (die du kennst und verstehst), so wie ich sie dir gepostet hatte, nutzen können. Da hättest du erkennen können, ob sich im Verhalten etwas ändert oder ob vielleicht bei beiden das Gleiche passiert.
Gäbe es da eine Veränderung, könntest du sagen, dass dein If Statement nicht funktioniert. Aber so vermutest du es einfach.

Fazit:

Dein If Statement funktioniert. Du wirst ein anderes Problem haben!
Es könnte sein dass dein Textelement gar nicht im Code bekannt ist ( dann hättest du aber ne Fehlermeldung auf die du reagieren solltest) oder aber du startest dein Spiel von woanders, ohne dass die Abfrage überhaupt relevanz hat, oder oder oder...

Wenn du also denkst, dass irgendetwas Neues nicht funktioniert, dann separiere das Problem und teste es einfach mal in einer leeren Szene mit einem kleinen Test Code oder lass dir einfach mal die Werte ausgeben, die das Neue dir bringt ( das geht auch in dem Projekt).
Dann wirst du dich weiterbilden, denn dann wirst du verstehen was da passiert und ob das neue überhaupt ein Problem darstellt.

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du wirst es mir nicht glauben, habs aber getestet. ;)

Hab den Fehler auch gefunden. Im Textfeld ist nichts, aber aus irgend einem Grund, wird hier ein Leerzeichen reingemogelt, auf das reagiert das Script dann. Also schon ganz richtig die if-Abfrage. IsNullOrEmpty, wenn ein Leerzeichen drin ist, was irgendwo her kommt, ist die if nun mal false, also startet er schon richtig. Woher das Leerzeichen kommt, versteh ich allerdings nicht. Im Textfeld ist zumindest kein Leerzeichen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...