おーみんだよ。

おーみんだよ。

プログラミング(主にUnity)や気になるニュースについて。

【Unity】Trying to Invoke method: 〇〇 couldn't be called. 解決法2つ

f:id:bookreadkun:20190321075455p:plain

おはようございます。おーみん(@Ooooooomin_365)です。

 

現在Unityでゲームを作成中です。

以前、操作を遅らせたいときに便利な関数としてInvoke関数を紹介しました。

【Unity初心者向け】数秒遅れて関数を実行する方法Invoke() - おーみんだよ。

 

しかし、このInvoke関数を利用していると時々こういうエラーログに合うことがあると思います。

 

"Trying to Invoke method: 〇〇(Invokeの中で呼び出したメソッド)couldn't be called."

 

これの原因は2つあります。

一つは結構有名で色々な方が記事にしているのでサラッと書きますが、「単純に指定したメソッド名が間違っている」だけ(笑)

 

メソッド名を確認してみるとうっかり間違っている場合があります。

 

しかしながら時々メソッド名が間違っていないのに上記のエラーが消えないときがあります。

 

それは他のスクリプトのメソッドを呼び出すときです。

例えば他のスクリプトをotherとしましょうか。

その際にそのスクリプトのメソッドを呼び出す際はother.method1などと表記します。

これをそのままInvoke("other.method1", 2.0f)と書いちゃうと同エラーが出てしまうんですよね...。

 

他のスクリプトから呼び出す際は、一旦Invoke関数を使うスクリプト内で新たにメソッドに作ってからにしましょう。

 

つまり今回のやつなら以下のように。

 

--------

void Update(){

     Invoke("method2", 2.0f);

}

 

private void method2(){

     other.method1();

}

--------

 

という感じ。

 

これでエラーも出ずにしっかりInvoke関数が発動すると思います。

 

 

ということで、Invokeのエラーでお困りの方は今回述べた2点を意識してみてくださいな!

 

では!