C# 为什么这个按钮不能用?

C# 为什么这个按钮不能用?,c#,unity3d,uibutton,C#,Unity3d,Uibutton,我设置了这个按钮来启动游戏,但它所做的只是在一秒钟内生成一个按钮,然后自动启动游戏。按钮突然弹出,大约0.5秒后消失。这是一个编码问题吗 using UnityEngine; using System.Collections; public class MainMenu : MonoBehaviour { #region Fields private int buttonWidth = 200; private int buttonHeight = 50; p

我设置了这个按钮来启动游戏,但它所做的只是在一秒钟内生成一个按钮,然后自动启动游戏。按钮突然弹出,大约0.5秒后消失。这是一个编码问题吗

using UnityEngine;
using System.Collections;

public class MainMenu : MonoBehaviour {

    #region Fields
    private int buttonWidth = 200;
    private int buttonHeight = 50;
    private string instructionText = "Instrucions:\nPress Left and Right     Arrows to Move.\nPress Space Bar to Fire.";
    #endregion


    void OnGUI()
    {
        GUI.Label(new Rect (10, 10, 250, 200), instructionText);
        if (GUI.Button(new Rect(Screen.width / 2 - buttonWidth / 2, Screen.height / 2 - buttonHeight / 2, buttonWidth, buttonHeight), "Start Game"));

        {
            Application.LoadLevel(1);
        }

    }

}


尝试删除if语句末尾的分号。

尝试删除if语句末尾的分号。

if循环末尾的分号导致始终调用Application.LoadLevel(1)。

if循环末尾的分号导致Application.LoadLevel(1)始终被调用。

当您在if语句前面放置分号时,它将结束该语句,并且不会继续“Application.LoadLevel(1);”。删除分号,使其将该行视为if的一部分。

当在if语句前面放置分号时,它将结束该语句,并且不会继续“Application.LoadLevel(1);”。删除分号,使其将该行视为if的一部分。

是的,这很有效,谢谢!是的,很有效,谢谢!这不是意味着无论GUI.Button的返回值如何,总是调用Application.LoadLevel(1)吗?这就是应用程序自动启动的原因。@PaulF我不确定你现在提到它,我想它不会。但我不确定让我去测试一个脚本。它会运行它,最后的分号只是使它下面的块不是“if”语句的一部分,所以它应该运行而不考虑检查。@PaulF yea刚刚检查过它总是运行我的错误:pDeesn这不是意味着不管GUI.Button的返回值如何,总是调用Application.LoadLevel(1)吗?这就是应用程序自动启动的原因。@PaulF我不确定你现在提到它,我想它不会。但我不确定让我去测试一个脚本。它会运行它,最后的分号只是使它下面的块不是“if”语句的一部分,因此,无论检查结果如何,它都应该运行。@PaulF yea刚刚检查过它始终运行my bad:p请参见上面的注释-分号只是终止if语句-代码继续运行到Application.LoadLevel(1)这就是为什么它会在短时间后自动启动。对不起,我解释错了。我想说的是,该行不是if的一部分,所以如果输入if来执行该行就无关紧要了。请参阅上面的注释-分号只是终止if语句-代码继续到应用程序。LoadLevel(1)这就是为什么它会在短时间后自动启动。对不起,我解释错了。我想说的是,那一行不是if的一部分,所以如果它输入if来执行那一行就无关紧要了。