变量减量中的Unity C#错误

时间:2019-04-13 17:40:39

标签: c# unity3d

我在Unity下使用C#进行游戏,并且攻击代码有问题。

我已经尝试将这段代码放在敌方脚本的空白处。

敌人代码:

public int Life = 5;
public int Speed = 100;

玩家攻击代码:

    // Use for player attack
public void Attack () {
    if (Input.GetKeyDown("space")) {
    EnemyD.Life = EnemyD.Life - 1;
    }
}

// Use for Auto Attack
public void AutoAttack () {
    EnemyD.Life = EnemyD.Life - 1;
}

Unity返回此错误: 错误CS0201:只能将赋值,调用,递增,递减,等待和新对象表达式用作语句。

谢谢您的帮助,杰森。

2 个答案:

答案 0 :(得分:1)

如果所有敌人或一组敌人都具有相同的脚本,则可以通过抓住被击中的任何敌人来调用特定脚本。

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.CompareTag("Monster"))
    {
        collision.gameObject.GetComponent<EnemyD>().Life -= 1;
    }
}

因此,如果您有两个敌人并且攻击了第一个敌人,则仅对他执行此操作。

答案 1 :(得分:0)

尝试放置名称正确的Class脚本,我想您的敌人脚本名为EnemyD

我们要指出的是-您的播放器试图在没有instance的情况下访问成员,所以这是一个错误。

如果您尝试在没有instance的情况下访问它们,则必须将static放在成员之前,这意味着属于该类不属于某个实例

通常会有这么多敌人,我们不使用静态敌人,而是使用here中的 Nikola G。的方法。 >

一些链接可能会有所帮助: