【Unity】Invoke、StartCoroutineを別スクリプトのメソッドへ使う

GameManagerから、別のスクリプトのメソッドを直接Invokeしたり、StartCoroutineを使用する方法。

正しいコード

以下の例ではGameManagerで、あらかじめプレイヤーの参照を取得。
publicなメソッド、コルーチンを呼んでいる。


//Invoke
	player.Invoke("PlayerMethod", 1.0f);

//StartCoroutine
	player.StartCoroutine("PlayerCoroutine");

理由

Invokeや、StartCoroutineは「MonoBehaviourクラス」のPublicメソッド(Staticではない)。
「MonoBehaviourクラス」は、スクリプトを作成した時にデフォルトで継承される奴です。

Staticなスクリプトではないので、相手スクリプト側のInvoke、StartCoroutineを呼んでいるという訳。

【失敗例】Invoke(“player.PlayerMethod”)

Resources.Loadを良く使っているので、ああ言った書き方が必要なのかと思い、Invoke(“player.PlayerMethod”)とか、アホなミスをしてしまった。
(実行されないので間違っているのが分かるが、Invokeの指定ミスのエラーは、コソッとしか出ない)。

タイトルとURLをコピーしました