错误 CS0103:当前上下文中不存在名称'hitEnemies'



我是编码新手。我只是试着编写一个小游戏,似乎有一个我无法修复的错误。有人能帮我吗

这是我的脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class animation : MonoBehaviour
{
Animator Ani;
public Transform attackPoint;
public float attackRange = 0.5f;
public LayerMask enemyLayers;
void Start()
{
Ani = GetComponent<Animator>();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{ 
Ani.SetTrigger("attack");
Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);
}
foreach(Collider2D enemy in hitEnemies)
{
Debug.Log("hit" + enemy.name);
}
}
}

我该怎么修?

既然你做了

if (Input.GetKeyDown(KeyCode.Space))
{ 
Ani.SetTrigger("attack");
Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);
}

变量hitEnemies仅存在于该if块内的范围

=>你想把其他代码也移到那里:

if (Input.GetKeyDown(KeyCode.Space))
{ 
Ani.SetTrigger("attack");
Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);

foreach(Collider2D enemy in hitEnemies)
{
Debug.Log("hit" + enemy.name);
}
}

或者有一个始终存在的变量。。。然后再次检查(我更喜欢第一种方式)

Collider2D[] hitEnemies = null;
if (Input.GetKeyDown(KeyCode.Space))
{ 
Ani.SetTrigger("attack");
hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);
}
if(hitEnemies != null)
{
foreach(Collider2D enemy in hitEnemies)
{
Debug.Log("hit" + enemy.name);
}
}

当前上下文中不存在名称"hitEnemies">

当前上下文:

foreach(Collider2D enemy in hitEnemies)
{
Debug.Log("hit" + enemy.name);
}

哪里存在?:

if (Input.GetKeyDown(KeyCode.Space))
{ 
Ani.SetTrigger("attack");
Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);
}

只需移动变量所在的位置。

最新更新