我想在计数器达到 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");
}
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");
}