C# 当游戏对象设置为false时,If语句将被忽略

C# 当游戏对象设置为false时,If语句将被忽略,c#,unity3d,C#,Unity3d,我正在为一个平台游戏的Unity项目工作,作为一名玩家,你必须收集日志,以保持关卡中的所有火焰。每个营火都有一个计时器,可以确保每隔x秒,火的动画就会变成麻木的火。当玩家收到100%的篝火时,脚本会阻止篝火计时器 我创建了一个if语句来处理如果营火是100%,它的数量不会减少。所以我声明一个布尔值是满的,如果营火是100%,它将被设置为真。然后,在下面的if语句未被激发。但问题是,当我的级别中有第二个未满的营火时,它不会减少,因为如果营火(1)已满,bool将设置为true,然后if语句将被忽略

我正在为一个平台游戏的Unity项目工作,作为一名玩家,你必须收集日志,以保持关卡中的所有火焰。每个营火都有一个计时器,可以确保每隔x秒,火的动画就会变成麻木的火。当玩家收到100%的篝火时,脚本会阻止篝火计时器

我创建了一个if语句来处理如果营火是100%,它的数量不会减少。所以我声明一个布尔值是满的,如果营火是100%,它将被设置为真。然后,在下面的if语句未被激发。但问题是,当我的级别中有第二个未满的营火时,它不会减少,因为如果营火(1)已满,bool将设置为true,然后if语句将被忽略

我用C夏普编码。脚本链接到每个营火。 下面的代码块位于Unity的
void Update()
内部

// If all campfires are empty = losing
    if (campfireStatus <= 0) {
        isEmpty = true;
    } else {
        isEmpty = false; // hier zat ook een fout. hij wordt als ie leeg was en je hem dan nog wel kon aanvullen. wordt ie nu weer op false gezet, dus dat ie niet empty is
    }

    // If all campfires are full = winning
    if (campfireStatus >= 4){
        isFull = true;
    }


    timer+= Time.deltaTime;

    if (!isFull) { // dit wordt maar 1x gedaan. als er 1 vuurtje isFULL 1 is dan wordt het andere vuurtje niet meer veranderd

        if (timer > beforeDecrease) {

            timer = 0;

            if (campfireStatus != 0) {
                campfireStatus--;
                //Debug.Log ("Decrease");

                if (campfireStatus == 0) {
                    allCampfireEmpty++;
                }

            }

        }

    }
//如果所有营火都是空的=丢失
如果(campfireStatus=4){
isFull=true;
}
timer+=Time.deltaTime;
如果(!isFull){//dit wordt maar 1x gedaan.als er 1 vuurtje已满,则1是Ander vuurtje nie meer verander
如果(计时器>减少前){
定时器=0;
如果(campfireStatus!=0){
营火状态--;
//调试日志(“减少”);
如果(campfireStatus==0){
allCampfireEmpty++;
}
}
}
}

您可以使用campfire脚本的全部代码。

您的代码没有遵循面向对象的实践。您的营火应该是实现
boolisfull
属性或字段的
Campfire
类的实例。通过这种方式,您可以对营火的任何实例说:

if (!campfire.IsFull)
// decrease campfire status

campfireStatus
实际上是针对每个营火单独跟踪,还是针对所有营火全局跟踪一次?我认为它使用全局跟踪,因为如果一个营火将其设置为true,另一个营火将被忽略@那么,O.R.MapperOk——为什么?:)我又检查了一遍。如果营火熄灭,它会将isEmpty的
bool
设置为true。但对另一个来说不是。所以它彼此独立。这不是我要寻找的地方。我试图通过标记为“Campfire”的所有游戏对象数组进行foreach循环,但这会给我一个错误。isFull将是红色的,当我把篝火贴在它前面,用一个点隔开
foreach(游戏对象营火中的营火){if(营火状态>=4){campfire.isFull=true;}}}