我试图在统一的弹药系统,但它不会工作。问题是,即使我的弹药用光了,我也可以继续摧毁小行星。
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ExplosionOnTouch : MonoBehaviour
{
// Start is called before the first frame update
public int Ammo = 10;
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (Ammo > 0)
{
Ammo = Ammo - 1;
Destroy(gameObject);
}
else
{
SceneManager.LoadScene("DeathScreen", LoadSceneMode.Single);
}
}
}
您的Ammo
永远不会变为零。你的脚本生命周期现在是:
- 创建对象
- 创建时设置
Ammo
为10 - 在碰撞时减少
Ammo
,破坏Ammo
计数为9的物体
因此,您需要将Ammo
计数移动到一个位置,并使所有脚本减少一个公共计数器,而不是每个对象的唯一计数器。例如,到创建子弹的脚本。这样会更符合逻辑。