Jump to content
Unity Insider Forum

GUI wird nicht mehr angezeigt


Recommended Posts

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

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

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

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

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

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

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:

 

guiia4ljd6t0g.png

 

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

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

Archiviert

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

×
×
  • Neu erstellen...