我通过创建一个简单的游戏来学习,例如太空侵略者。我遇到的问题是有时执行脚本,有时不执行。让我向您展示代码:
首先,我的玩家开枪,实例化子弹的预制。
开枪:
void Update() {
if (Input.GetMouseButtonDown(0)) {
Instantiate(rocket, strzal.position, strzal.rotation);
}
}
子弹脚本:
private void OnTriggerEnter2D(Collider2D collision) {
if (collision.gameObject.tag== "Przeszkoda"){
collision.GetComponent().TakeDamage(damage);
Destroy(gameObject);
}
}
然后,如果子弹击中目标,则会触发伤害功能:
public void TakeDamage(float amount) {
health -= amount;
if (health <= 0) {
ABC.GetComponent<DEF>().NowyPoziomTrudnosci();
gameObject.SetActive(false);
到目前为止,一切正常。但是问题始于NowyPoziomTrudnosci
函数。有时,它的运行会杀死3个敌人,并且什么也没有发生,接下来有2个敌人运行该代码,然后又有x个敌人死亡,并且代码没有执行。
public void NowyPoziomTrudnosci() {
kills = kills + 1;
Debug.Log("wykonane"+ kills);
}
知道我在哪里弄错了吗?我会知道NowyPoziomTrudnosci
是否根本不会运行。但是它正在运行,而并非每次都运行。