代码在“构建”后无法正常工作

时间:2019-08-26 17:45:22

标签: c# unity3d

我试图在角色触摸尖峰时做到这一点,然后将检查点值设置为1,并且当它触摸标记时,死掉(我在尖峰处添加了标签“ Spikes1”,在标记中添加了“ Flag”标签)。

我尝试在画布上添加文本,以查看代码是否完全有效(debug.text是该文本)。

代码:

    void OnCollisionEnter2D(Collision2D col) {
        if (col.gameObject.tag == "Coin") {
            debug.text = "Coin touched";
            Health = Health - 1;
        } else if (col.gameObject.tag == "Spikes1") {
            debug.text = "Spikes touched";
            CheckPointNumber = 1;
        } else if (col.gameObject.tag == "Flag") {
            debug.text = "Flag touched";
            Health = 0;
        }
        JumpActive = true;
    }

一切都可以在Unity本身中正常运行,但是当我构建游戏并将其作为exe文件运行并触摸峰值时,它的行为就像我触摸了标志,而当我触摸标志时则什么也没有发生。

1 个答案:

答案 0 :(得分:0)

您是否尝试遵循Unity3D网站上的Survival Shooter示例的某些原则? 在那里,您会看到“玩家健康”部分,其中显示了您应如何正确处理玩家的健康:Survival Shooter Training

在您的代码中,我可以看到您每当它命中“硬币”时就会降低运行状况,因此您应该进行如下检查:

if (col.gameObject.tag == "Coin") {
    debug.text = "Coin touched";

    if (Health > 0)
    {
        Health--;
    }
    else
    {
        Death();
    }
}

Death()是您为了“杀死”角色而需要进行编程的函数。 您应该通过调用Death()而不是使Health等于0,对“标记”标签检查应用相同的行为。

关于错误的行为,请检查是否正确填充了所触摸对象的标签。也许该标志被配置为以尖峰运行。

希望有帮助。