私のコード呼び出されません。Invoke()
が動作しない理由を呼び出しは()
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);
}
}
誰も私を指摘することはできますか? (EnemiesAlive <= 0)
という条件が満たされたら、シーンを変更する前に2秒の遅延を加えたいと思っていました。 Debug.Log ("Hello");
が出力されていないときにDebug.Log ("LEVEL WON!");
が出力されます。私もStartCoroutine
を使うことができると知っていますが、代わりにInvoke()
を使いたかったのです。
私の意図を正しく予測していただきありがとうございます。以前は言及していなかった。私は正常にあなたのステップを "下のスクリプトを追加..."に従ってきましたが、自分のコードにあなたの与えられたコードを追加する方法についてはわかりません。私は試して、SceneLoaderでエラーを取得します。 SceneLoaderを先に宣言する必要はありますか?私はそれをどのようなタイプで宣言すべきですか? – jer
@jer命令の最後の部分を 'Enemy'スクリプトに直接変更しました。ちょうどそれをコピーする。あなたが 'SceneLoader'スクリプトを作成し、*" SceneLdObj "*と呼ばれる新しいGameObjectにそれを添付する限り、これはうまくいくはずです。 – Programmer
私は最近stackoverflow.comを使用しています。私は受け入れなければならないか分からない。ごめんなさい。ヘッドアップをありがとう。 :) – jer