C# 我的第二个游戏对象是在后台工作

C# 我的第二个游戏对象是在后台工作,c#,unity3d,C#,Unity3d,我在游戏中有两个cheesbar。。。完成后,会出现另一个…并且有“吃按钮”。当鼠标靠近奶酪时,该按钮被激活,并使continueeating bool激活。我按下并按住按钮,奶酪正在被吃掉,当奶酪吃完后,第二个游戏对象出现,这意味着第二个奶酪条,在某处,但开始时是半个奶酪条…所以即使它已设置为活动(false);一开始,它在减少,好像它被激活了。。。我怎样才能纠正这个问题 提前谢谢 void Start () { eatingcheese = maxcheese; eating

我在游戏中有两个cheesbar。。。完成后,会出现另一个…并且有“吃按钮”。当鼠标靠近奶酪时,该按钮被激活,并使continueeating bool激活。我按下并按住按钮,奶酪正在被吃掉,当奶酪吃完后,第二个游戏对象出现,这意味着第二个奶酪条,在某处,但开始时是半个奶酪条…所以即使它已设置为活动(false);一开始,它在减少,好像它被激活了。。。我怎样才能纠正这个问题

提前谢谢

void Start ()
{
    eatingcheese = maxcheese;
    eatingcheese2 = maxcheese2;
}

void Update ()
{
    cheesebar.fillAmount = eatingcheese / maxcheese;
    cheesebar2.fillAmount = eatingcheese2 / maxcheese2;

    if (continueeating)
    {
        eatingcheese--;
        eatingcheese2--;
        hungerscript.gettinghungery+=1.5f;
    }
    if (eatingcheese <=0)
    {
        cheesebar.gameObject.SetActive(false);
        cheesebar2.gameObject.SetActive(true);
    }

}

public void eating()
{
    continueeating = true;
}

public void stopeating()
{
    continueeating = false;
}
void Start()
{
吃奶酪=最大奶酪;
eatingcheese2=maxcheese2;
}
无效更新()
{
cheesebar.fillAmount=食用奶酪/最大奶酪;
cheesebar2.fillAmount=eatingcheese2/maxcheese2;
如果(继续)
{
吃奶酪;
吃奶酪2-;
hungerscript.gettinghungery+=1.5f;
}

如果(吃奶酪我注意到代码中

 if (continueeating)
{
    eatingcheese--;
    eatingcheese2--;
    hungerscript.gettinghungery+=1.5f;
}
无论cheesebar2是否处于活动状态,您都可以递减eatingcheese2。您可以检查奶酪是否可以食用,如果可以,则只继续递减eatingcheese2。您可以使用整数跟踪当前正在食用的奶酪,并使用开关语句根据该状态递减其中一个值。或者如果你确定你只能吃两块奶酪,你可以使用bool和if语句


请注意,Update()依赖于帧速率,您要处理的是非常大的eatingcheese数(因为每次更新都会在被吃掉时递减)。我建议使用1到0之间的浮点数表示整个奶酪和完全食用的奶酪,我还建议将每一步的食用量乘以时间。deltaTime因此避免缩放过快和不可预测的问题。

谢谢。.我添加了类似这样的if(cheesebar2.IsActive()){eatingcheese2--;hungerscript.gettinghungery+=1.5f;}现在作为一个完整的奶酪开始,但当我按下eat按钮时,它不会减少:)
如果(cheesebar2.active)
是检查它是否处于活动状态的方法。一步一个步骤,然后使用Debug.Log()查看if语句中的代码是否曾经运行过。UnityEngine.UI.Image“不包含
active”的定义,并且没有类型为的扩展方法,
active”…因此我不能将“active”放在第一个图像中,但isActive适用于第二个图像:/但是为什么不适用于第二个图像呢?啊,我很抱歉,我假设cheesebar2是一个游戏对象。你的if(cheesebar2.IsActive())语句嵌套在if(continueeating)语句中?没问题……我刚刚发现我在第一个cheesbar上附加了一个cheescontroller。因此,当第一个cheesbar未激活(完成)时,cheesecontroller也会被禁用,因为它是第一个cheesbar的子项:))最后,我决定将cheesescript添加到鼠标中…现在工作正常:)非常感谢