我在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:只能将赋值,调用,递增,递减,等待和新对象表达式用作语句。
谢谢您的帮助,杰森。
答案 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。的方法。 >
一些链接可能会有所帮助: