【发布时间】:2021-06-24 01:14:56
【问题描述】:
所以我想在敌人数量达到 0 时暂停游戏。所以我使用 GameObject.FindGameObjectsWithTag("Enemy").Length 来查找敌人的数量。我把它放在一个在敌人被实例化时被正确调用的函数中,所以我可以看到长度变为 4,因为有 4 个敌人产卵。当敌人被杀死时,再次调用该函数,其中长度再次打印到控制台。出于某种原因,尽管只有 3 个敌人,但在杀死第一个敌人时,计数再次以 4 重复。一旦另一个敌人被杀死,当实际上有 2 个敌人时它会报告 3,依此类推,直到当有 0 个敌人时我达到 1。
这是第一个sn-p代码:
public class EnemyList : MonoBehaviour
{
public List<GameObject> weakMobs = new List<GameObject>();
public List<GameObject> mediumMobs = new List<GameObject>();
public List<GameObject> bossMobs = new List<GameObject>();
public List<Transform> spawningChildren = new List<Transform>();
public static int mobCount;
void Start()
{
for (int i = 0; i < spawningChildren.Count; i++)
{
GameObject newWeakMob = Instantiate(weakMobs[0], spawningChildren[Random.Range(0, 4)]) as GameObject;
}
CheckMobCount();
}
public void CheckMobCount()
{
mobCount = GameObject.FindGameObjectsWithTag("Enemy").Length;
print(mobCount);
}
下一段代码是杀死敌人并再次调用 CheckMobCount()。
public void TakeDamage()
{
enemyCurrentHealth -= 25;
enemyHealthBar.SetHealth(enemyCurrentHealth);
if (enemyCurrentHealth == 0)
{
Destroy(this.gameObject);
enemyList.CheckMobCount();
//needs death animations
}
}
以下是控制台消息: Console of printed lengths
我是自学的,所以如果这是初级的,我深表歉意。我尝试了几种不同的方法,这是我最接近的方法,但我也乐于接受新的想法。
谢谢!!
【问题讨论】: