2016-08-01 9 views
0

Ich bin neu in der Einheit. jetzt dies ist mein Code für Spielmenü:Convert Int zu Boolean in Einheit

public class s1sc : MonoBehaviour { 

    private bool toggle2 = false; 
    private bool toggle3 = false; 
    private bool toggle4 = false; 
    private bool toggle5 = false; 
    private bool toggle6 = false; 
    public int maxPlayer = 0; 

    void OnGUI() 
    { 
     if (toggle2 = GUILayout.Toggle (toggle2, "2 player")) { 
      maxPlayer = 2; 
     } 
     if (toggle3 = GUILayout.Toggle (toggle3, "3 player")) { 
      maxPlayer = 3; 
     } 
     if (toggle4 = GUILayout.Toggle (toggle4, "4 player")) { 
      maxPlayer = 4; 
     } 
     if (toggle5 = GUILayout.Toggle (toggle5, "5 player")) { 
      maxPlayer = 5; 
     } 
     if (toggle6 = GUILayout.Toggle (toggle6, "6 player")) { 
      maxPlayer = 6; 
     } 

     if (GUILayout.Button ("mod friendly fire", GUILayout.Width (300), GUILayout.Height (50))) { 

      if (maxPlayer = 0) { 
       GUILayout.TextField ("select max players!", GUILayout.Width (300), GUILayout.Height (50)); 
      } else { 
       Application.LoadLevel ("s2"); 
      } 
     } 
    } 
} 

und ich bekomme diese Fehlermeldung, wenn ich versuche, es zu laufen:

Aktiva/Szene 1/s1sc.cs (41,25): Fehler CS0029: kann nicht implizit Typ int' to Bool‘

konvertieren, wie ich Bool umwandeln kann in diesem Code in int?

Antwort

1

Sie müssen nicht. Sie haben den Vergleich in Ihrer if-Anweisung falsch.

Es versucht derzeit, das Ergebnis von GUILayout.Toggle (toggle2, "2 player") zu toggle2 zuzuordnen, die ein Boolean ist.

Booleschen Vergleich arbeitet mit einem Doppel equals Zeichen: wie folgt aus: ==

Denken Sie daran, dass selbst wenn Sie eine doppelte Gleichheitszeichen verwenden, können Sie versuchen immer noch eine ganze Zahl mit einem boolean zu vergleichen. Sie könnten versuchen casting or converting the integer, damit Sie es richtig vergleichen können, aber letztlich könnten Sie besser die gleichen Typen in Ihrem Vergleich verwenden.

1

Sie verwenden Zuweisungsoperator =, müssen Sie Vergleichsoperator ==

if (toggle2 == GUILayout.Toggle (toggle2, "2 player")) 
    { 
      maxPlayer = 2; 
    } 
0

allererst eine wichtige Sache verwenden, dass C# ist streng boolean Sprache erinnern im Gegensatz zu C++ dh

if(boolean_expression) 
    { 
     **/*boolean expression should result into either "true" or "false" otherwise 
      you'll get compile time error */** 
    } 

Wenn Sie also

verwenden, wenn (maxplayer = 0)

"maxplayer = 0" ergibt 0 nicht wahr oder falsch welche C# -Sprache suchen, wenn Sie diesen Ausdruck in C++ verwenden, erhalten Sie keinen Kompilierungsfehler und 0 steht für falsch in C++ und "irgendein" anderer Wert (wie 1,11, "string", - 1) außer Null wird als wahr betrachtet.

Also verwenden Sie == was bedeutet "Gleich" nicht = was ist ein Zuweisungsoperator.