Kojote Geschrieben 21. Oktober 2019 Melden Share Geschrieben 21. Oktober 2019 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 More sharing options...
malzbie Geschrieben 21. Oktober 2019 Melden Share Geschrieben 21. Oktober 2019 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 More sharing options...
Kojote Geschrieben 22. Oktober 2019 Autor Melden Share Geschrieben 22. Oktober 2019 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. Boolean 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 More sharing options...
Jomnitech Geschrieben 22. Oktober 2019 Melden Share Geschrieben 22. Oktober 2019 Hab das jetzt noch nie verwendet, aber müsstest du wenn du den String abfragst, den text nicht noch in einen String convertieren? string.IsNullOrEmpty(TMPPlayerNameText.text.ToString()) Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 22. Oktober 2019 Melden Share Geschrieben 22. Oktober 2019 @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 More sharing options...
Kojote Geschrieben 23. Oktober 2019 Autor Melden Share Geschrieben 23. Oktober 2019 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 More sharing options...
Sascha Geschrieben 23. Oktober 2019 Melden Share Geschrieben 23. Oktober 2019 Am besten ist es, wenn du die Ursache für das Leerzeichen behebst, aber ansonsten (oder auch einfach zur Sicherheit) hilft dir " meinString ".Trim() 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.