Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于更改级别的If-else语句_C#_If Statement_Unity3d - Fatal编程技术网

C# 用于更改级别的If-else语句

C# 用于更改级别的If-else语句,c#,if-statement,unity3d,C#,If Statement,Unity3d,我有一个在我的游戏中改变关卡的功能。在游戏中,第一级正确地转换为第二级。但是第二级也会变为第一级,然后计数=4。我怎样才能解决这个问题?这是我的密码: public void CheckLevelCompletion() { if ((count == 4) && (levelOneCompleted == false)) { img.sprite = levelCompletedImage; count = 0; leve

我有一个在我的游戏中改变关卡的功能。在游戏中,第一级正确地转换为第二级。但是第二级也会变为第一级,然后计数=4。我怎样才能解决这个问题?这是我的密码:

public void CheckLevelCompletion() {
    if ((count == 4) && (levelOneCompleted == false)) {
        img.sprite = levelCompletedImage;
        count = 0;
        levelOneCompleted = true;
        SceneManager.LoadScene("FifthGameSecondLevel");
    }
    else if ((count == 6) && (levelOneCompleted == true))
    {
        img.sprite = levelCompletedImage;
        count = 0;
        levelTwoCompleted = true;
        SceneManager.LoadScene("FifthGameThirdLevel");
    }
} 

我不知道你的代码步骤,但我想可能就是这种情况。 若场景重新加载,则上一场景中的游戏对象将被销毁。 所以
levelOneCompleted
总是
false
。 这就是为什么
SceneManager.LoadScene(“FifthGameThirdLevel”)不运行


如果正确,我建议在二级游戏对象中公开并设置
true

我不知道你的代码步骤,但我想可能就是这种情况。 若场景重新加载,则上一场景中的游戏对象将被销毁。 所以
levelOneCompleted
总是
false
。 这就是为什么
SceneManager.LoadScene(“FifthGameThirdLevel”)不运行


如果正确,我建议在二级游戏对象中公开并设置
true

当你一步一步地浏览代码时会发生什么?你需要发布更多的代码部分,比如
count
填充的位置,变量的作用域是什么?当你单步执行代码时会发生什么?你需要发布更多的代码部分,比如where is
count
填充,变量的作用域是什么?是的,我还认为变量levelOneCompleted不会改变它的值,但我不知道为什么。在程序开始时,它的值为false。但是在分支中,if((count==4)和&(levelOneCompleted==false))的值应该更改为true,但什么也不会发生。我该怎么办呢?或者你可以把它变成一个
静态的
变量,这样它就可以保持它的值。不要因为这个原因把事情变成静态的,那太糟糕了,而不是静态的目的
static
用于未链接到类的特定实例的属性,
Math.Pi
例如:调用
new Math()
是没有意义的,因此它的所有字段和方法都是静态的。是的,我还认为变量levelOneCompleted不会更改其值,但我不知道为什么。在程序开始时,它的值为false。但是在分支中,if((count==4)和&(levelOneCompleted==false))的值应该更改为true,但什么也不会发生。我该怎么办呢?或者你可以把它变成一个
静态的
变量,这样它就可以保持它的值。不要因为这个原因把事情变成静态的,那太糟糕了,而不是静态的目的
static
用于未链接到类的特定实例的属性,
Math.Pi
例如:调用
new Math()
没有意义,因此它的所有字段和方法都是静态的。