我想在计数器达到 0 时更改场景,但它不起作用

I want to change scene when the counter reaches 0 but it does not work

public class EnemyCounter : MonoBehaviour
{
    GameObject[] enemies;

    public Text enemyCountText;

    void Start()
    {
    }

    void Update()
    {
        enemies = GameObject.FindGameObjectsWithTag("bad");

        enemyCountText.text = "Enemies : " +
                              enemies.Length.ToString();

        if (enemies == null)
        {
            SceneManager.LoadScene("Level2");
        }
    }
}

空数组与空数组不同。一个从未定义过的数组, GameObject[] enemies;,将为空。但是,如果此数组是新创建的并填充了值,则它不再为空,即使在删除这些值之后也是如此。

数组是指向存储在内存中的数据的指针。删除存储在内存中的数据不会删除指针。

我的建议是还要检查长度:

if (enemies == null || enemies.Length == 0) 

当您定义了一个列表时,此代码不起作用。事实上,具有零个成员的列表不等于 null。 null 表示没有列表定义。

enemies == null;

这样更改代码:

if (enemies.Length == 0)
{
    SceneManager.LoadScene("Level2");
}