TGSlp Geschrieben 16. Oktober 2012 Melden Share Geschrieben 16. Oktober 2012 Hi.. Gestern habe ich noch einem Tutorial gefolgt und eine Multiplayer GUI gemacht. Leider hatte ich einen Fehler, den ich nicht finden konnte und wollte nochmal alles neu machen. Nun habe ich das Problem, dass mir die GUI nicht mehr angezeigt wird wenn ich das Spiel starte.. Weder bei meinem alten Projekt, noch bei komplett neuen. Ich arbeite mit Visual C#. Code bis jetzt der 100% wie im Video ist: using UnityEngine; using System.Collections; public class MenuManager : MonoBehaviour{ public string CurrentMenu; void Start() { CurrentMenu = "Main"; } void OnGUI() { if (CurrentMenu == "Main") Menu_Main(); if (CurrentMenu == "Lobby") Menu_Lobby(); if (CurrentMenu == "Host") Menu_HostGame(); } public void NavigateTo(string nextmenu) { CurrentMenu = nextmenu; } public void Menu_Main() { if (GUI.Button(new Rect(10, 10, 200, 50), "Host Game")) { NavigateTo("Host"); } } private void Menu_HostGame() { if (GUI.Button(new Rect(10, 10, 200, 50), "Back")) { NavigateTo("Main"); } } private void Menu_Lobby() { } } Doch wie gesagt, wird mir einfach der blaue Bildschirm gezeigt und nicht der Button. An den Einstellungen habe ich nichts gemacht. Habe Unity schon neu installiert auch mit dem Revo Uninstaller. Leider hat nichts gebracht. Auch nicht eine ältere portable Version. Woran kanns nun liegen? Danke. Mfg. TGS Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 16. Oktober 2012 Melden Share Geschrieben 16. Oktober 2012 Das Script sieht soweit ok aus, auch wenn ich glaube dass du nicht alles 100% gleich hast wie im Tutorial (einige der Methoden sind zB public obwohl gleichartige andere private sind, etwas inkonsistent), aber egal: 1. Gibt es Fehlermeldungen in der Konsole? 2. Befindet sich das Script überhaupt auf einem GameObjekt in der Szene? 3. Ist dieses GameObjekt aktiviert? 4. Ist das Script auf diesem GameObjekt aktiviert? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TGSlp Geschrieben 16. Oktober 2012 Autor Melden Share Geschrieben 16. Oktober 2012 Hi. Erstmal VIELEN Dank =) Also hier ist das Video: http://www.youtube.com/watch?v=o_wQ8Kw6A_s Bei 5:37 sieht man den Code. Ich habe das Script auf MainCamera gelegt, obwohl im Video das Script nirgens drauf gelegt wird, soweit ich mich erinnern kann. Ein Häkchen neben dem Script habe ich. Ich hoffe du oder auch jemand anderes kommt den Problem näher, denn das behindert grade mein ganzes Projekt Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 16. Oktober 2012 Melden Share Geschrieben 16. Oktober 2012 Versuche mal Testweise direkt am Start der OnGUI Methode Menu_Main(); aufzurufen ohne irgendwelchen if Bedingungen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TGSlp Geschrieben 16. Oktober 2012 Autor Melden Share Geschrieben 16. Oktober 2012 Hat leider nicht funktioniert Ich hoffe jemand findet den Fehler, ich verzweifle grad Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 16. Oktober 2012 Melden Share Geschrieben 16. Oktober 2012 Tu mal als erste Anweisung in OnGUI und Menu_Main jeweils ein print mit aussagekräftigem String. Was wird alles angezeigt? Btw, Strings vergleicht man mit Equals, nicht mit ==. Löst aber dein Problem auch nicht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 17. Oktober 2012 Melden Share Geschrieben 17. Oktober 2012 Btw, Strings vergleicht man mit Equals, nicht mit ==. Löst aber dein Problem auch nicht. In Java (jepp Java) oder wenn man Groß/Kleinschreibung anders beachtet haben möchte, ansonsten geht == hervorragend Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Hendrik Geschrieben 17. Oktober 2012 Melden Share Geschrieben 17. Oktober 2012 Kleine Klugscheisserei nebenbei (Hey, das reimt sich!): In C# ist der Operator "==", wie Marrrk schon gesagt hatte weitestgehend gleichwertig mit der Funktion "Equals()". Nur bei relativ kleinen Zeichenketten zeigt sich, dass Equals() einen kleinen Geschwindigkeitsvorteil hat. Dieser Vorteil nimmt aber mit zunehmender Länge der Zeichenkette ab und ist ab 20 Zeichen absolut irrelevant. Was aber wichtig ist: Da Equals() mit einer anderen Methode vergeleicht als "==" muss man auf ein paar Kleinigkeiten achten, Equals arbeitet nämlich Referenzbasiert, im Gegensatz zu "==", welches nur die Werte der Strings vergleicht. Auf gut Deutsch heißt das, dass man eine "NullReferenceException" bekommt, wenn man einen String per "Equals()" mit null vergleicht, während "==" einfach nur "FALSE" ausgibt. Eine große Fehlerquelle (Und das ist der Grund warum ich "Equals()" verabscheue, das hat solch einen Fehler nämlich zur Ursache) ist, dass man per Equals() ein object übergeben kann. Soweit alles in Ordnung.Das ganze fängt aber an, nicht mehr lustig zu sein wenn man um 11 Uhr Abends eine solche Funktion schreibt public static virtual bool ContainsRegisteredAction(string actionType) { foreach (BasicAction _ba in actionTypes) if (_ba.Equals(actionType)) return true; return false; } und sich am nächsten Morgen dann wundert warum die Funktion immer nur "FALSE" ausgibt. Denn dieser ganze Müll kompiliert anstandslos, nur funktionieren tut er nicht. WTF. Ich habe sage und schreibe 1,5 Stunden damit verbracht den Code zu durchwühlen um den Fehler zu finden, bis ich auf diese kleine ********* von Equals() gekommen bin. WTF. Was lernen wir daraus: Bei strings immer "==" benutzen. MSDN (letzter Absatz) empfiehlt das und ich tue es auch. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 17. Oktober 2012 Melden Share Geschrieben 17. Oktober 2012 Wieder was gelernt. Aber jetzt wo ich so drüber nachdenke - string wird in c# ja auch klein geschrieben Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TGSlp Geschrieben 17. Oktober 2012 Autor Melden Share Geschrieben 17. Oktober 2012 Eure Lösungen bringen mir nicht viel, weil ich 1. nur vb.net gelernt habe und in c# komplett neu bin wegen Unity, und der Code ja gehen muss von meinem alten Projekt, wo ich nichts am Code gemacht habe, und trotzdem keine GUI angezeigt wird. Das ist ja plötzlich passiert. Deshalb kann es nicht sein, dass es eine andere Ursache hat? Mfg. TGS Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Graphiler Geschrieben 17. Oktober 2012 Melden Share Geschrieben 17. Oktober 2012 @Sascha string ist in C# ein Struct(primitiver Datentyp) und String eine Klasse, aber die beiden sind im Grunde das gleiche. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Hendrik Geschrieben 17. Oktober 2012 Melden Share Geschrieben 17. Oktober 2012 Stimmt so nicht. "string", also der von Yannic besagte primitive Datentyp, ist nur ein alias. Im Grunde referenziert sie nur auf die Klasse "String". Beides sind also exakt dasselbe. Nachzulesen hier: http://en.csharp-online.net/CSharp_String_Theory—string_versus_String Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Graphiler Geschrieben 18. Oktober 2012 Melden Share Geschrieben 18. Oktober 2012 Hab ich doch gesagt? string ist halt das C#-Äquivalent zu System.String(CLR). Das ist wie int und System.Int32(CLR). Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 18. Oktober 2012 Melden Share Geschrieben 18. Oktober 2012 Leute! Warum müsst ihr solche Themen immer für eure Wissensballerei nutzen? Dem TGS hilft das nicht! Es ist auch sowas von egal ob dies oder das ein Struct oder eine Klasse ist. Da es euch nicht eingefallen ist, will ich dem Jung mal helfen. Ich habe den Code 1zu1 rauskopiert und damit ein Script erzeugt. Dann habe ich es einem Objekt in der Szene verpast und siehe da: Es geht wie gewünscht. Es ist also kein Schreibfehler drin und die Vars und Bedingungen sind richtig. Somit gibt es nur eine Möglichkeit: Das Script wurde keinem Objekt in der Szene zugewiesen! Egal ob 0-Objekt oder Camera selbst, es scheint nicht genutzt zu werden! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AgentCodeMonk Geschrieben 18. Oktober 2012 Melden Share Geschrieben 18. Oktober 2012 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiles Geschrieben 18. Oktober 2012 Melden Share Geschrieben 18. Oktober 2012 Noch eine Möglichkeit die mir immer mal wieder mit GUI Text passiert: das Zeug hängt zwar an einem Objekt, selbiges wurde aber versehentlich ausgewählt und verschoben. Schwupps wird der GUI Text nicht mehr angezeigt weil er nun offscreen steht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 18. Oktober 2012 Melden Share Geschrieben 18. Oktober 2012 Jo, aber in diesem Falle ist es OnGUI! Also kein GuiObjekt. Da kann sich nix verschieben. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiles Geschrieben 18. Oktober 2012 Melden Share Geschrieben 18. Oktober 2012 Stümmt. Wollte es trotzdem erwähnt haben Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TGSlp Geschrieben 18. Oktober 2012 Autor Melden Share Geschrieben 18. Oktober 2012 Hi. Erstmal danke, dass ihr wieder angefangen habt, mir zu helfen Leider hängt das Script schon an einem Objekt! An "Main Camera" So siehts aus bei mir: Sieht dort einer irgendeinen Fehler? Hab gestern Visual C# und Unity deinstalliert, und neu installiert, doch auch das brachte nichts. Mfg. TGS Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TGSlp Geschrieben 18. Oktober 2012 Autor Melden Share Geschrieben 18. Oktober 2012 So, alles geht! Da ich im Chat den lieben Siebenkeim gefragt habe, und er den Fehler gefunden hat: void start() muss zu void Start() Nun geht alles! Vielen lieben dank an dich!!! Mfg. TGS, und ich bin mir sicher, dieses Forum wird noch öfter von mir hören! Also ich bin froh und es kann geclosed werden =))) Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 18. Oktober 2012 Melden Share Geschrieben 18. Oktober 2012 Aber du hattest doch Start anstatt start in deinem original Anfangspost, war der Code den du da gepostet hattest denn nicht identisch mit deinem Livecode? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TGSlp Geschrieben 18. Oktober 2012 Autor Melden Share Geschrieben 18. Oktober 2012 Ja das stimmt.. Deswegen habe ich den Fehler ja nicht gefunden. Im C# Projekt war aber das "S" klein, warum auch immer... Aber hauptsache es ist geklärt. Mfg. TGS Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 18. Oktober 2012 Melden Share Geschrieben 18. Oktober 2012 Du Nase, oben steht's richtig Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TGSlp Geschrieben 18. Oktober 2012 Autor Melden Share Geschrieben 18. Oktober 2012 ja ich weiss doch auch nicht warum das nicht so war in VC# =D Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 18. Oktober 2012 Melden Share Geschrieben 18. Oktober 2012 Junge! Der Code hier in deinem Post hat das große S bei start!!! Was machte dann für Sachen? Der, der das heraus findet ohne irgendeinen Anhaltspunkt dazu zu haben, kann auch über Wasser laufen! 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.