我的代碼:調用()不會被調用
public class Enemy : MonoBehaviour
{
public GameObject deathEffect;
public float health = 4f;
public static int EnemiesAlive = 0;
public int loadToScene;
void Start()
{
EnemiesAlive++;
}
void OnCollisionEnter2D (Collision2D colInfo)
{
if (colInfo.relativeVelocity.magnitude > health)
{
Die();
}
}
void Die()
{
Instantiate(deathEffect, transform.position, Quaternion.identity);
EnemiesAlive--;
if (EnemiesAlive <= 0)
{
Debug.Log ("LEVEL WON!");
Invoke("ChangeScene",2f);
}
Destroy(gameObject);
}
void ChangeScene()
{
Debug.Log ("Hello");
loadToScene = 1;
SceneManager.LoadScene (loadToScene);
}
}
任何人都能指出我爲什麼Invoke()
不起作用?一旦滿足條件(EnemiesAlive <= 0)
,我想在改變場景之前增加2秒的延遲時間。輸出Debug.Log ("LEVEL WON!");
,而Debug.Log ("Hello");
不輸出。我知道我也可以使用StartCoroutine
,但我想用Invoke()
代替。
謝謝你正確預測我的意圖。我之前忘了提及。我已成功按照步驟操作,「添加下面的腳本...」,但我不確定如何將給定的代碼添加到我的代碼中。我試過並在SceneLoader上出現錯誤。我需要首先聲明SceneLoader嗎?我應該聲明哪種類型? – jer
@jer將指令的最後部分直接修改到您的'Enemy'腳本中。只需複製一下。只要你創建了SceneLoader腳本並將其附加到名爲*「SceneLdObj」*的新GameObject中。這應該工作。 – Programmer
我只是最近使用stackoverflow.com。我不知道我必須接受。對不起。感謝您的高舉。 :) – jer