Unity C# 顶视角射击游戏累计销毁20个敌人后停止生成问题
计数逻辑错误(最高概率)
你当前仅在敌人生成的SpawnObject协程中执行了GameController.EnemyCount++,但敌人死亡回池的Die方法中没有对应的GameController.EnemyCount--操作。敌人生成的判断条件为GameController.EnemyCount < spawnSettings[0].maxObjects,如果你的spawnSettings[0].maxObjects刚好配置为20,计数会一路累加到20后触发上限,永远无法满足生成条件。而分数增长逻辑是直接在Die方法中修改ScoreController.scoreValue,和该计数无关,因此分数可以正常增长。
你可以直接在生成逻辑的判断前加日志Debug.Log($"当前存活计数:{GameController.EnemyCount},生成上限:{spawnSettings[0].maxObjects}")验证该问题。对象池属性未重置
如果确认计数逻辑没问题,检查你对象池的SpawnObject、ReturnObject方法是否正确重置敌人实例的状态:
敌人回池时如果没有把health重置为初始最大值,下次从对象池取出激活时,health还是小于等于0的状态,会立刻调用Die方法回池,表现为敌人没有生成就消失。对象池容量不足
检查你的enemyPool的最大容量配置是否为20,如果对象池满了且没有配置自动扩容逻辑,调用SpawnObject不会生成新的敌人实例,也会出现无敌人生成的情况。生成点位/逻辑异常
检查敌人生成点的坐标是否合法,是否存在生成在地下、地图外的情况,敌人出生后如果触发了掉落销毁逻辑会直接回池,也会看不到敌人。同时检查你代码中未贴出的Spawn()方法是否异常修改了spawningObject状态标记,导致生成逻辑错乱。
内容的提问来源于stack exchange,提问作者capncromch

