【Unity】Invokeの使い方!実行タイミングを自在に操ろう

unityにはinvokeという数秒後の処理をする関数があります。

この記事では、

  • invokeで何ができるの?
  • invokeの使い方
  • InvokeRepeating()
  • CancelInvoke()
  • IsInvoking()
  • invokeのよくある疑問

といったように、基本的な内容から少し応用的な内容までわかりやすく解説します!

invokeで何ができるの?

invokeを使えば、設定した時間に関数を呼び出すことができます。例えば、2秒後にオブジェクトを消すといったようなことです。コルーチンでも似たような処理を行うことができます。

しかしコルーチンの場合はコードの量が少し多くなり面倒なので、簡単な処理を行いたい場合はinvokeで良いでしょう。

実際に使ってみよう

invokeは、

といったように使います。invokeを使うため自分で関数を作っておく必要があります。

それでは実際にやっていきましょう。今回は2秒後にオブジェクトを消すコードを書いていこうと思います。そのために適当にオブジェクトとスクリプトを作成し、オブジェクトにアタッチしておきましょう。コード内容は、

実行結果は、

2秒後に消えていますね!このようにInvokeを使えば数秒後の処理を簡単に行えます。

応用的な使い方

Invokeの応用的な使い方として関連する関数を三つ紹介しましょう。

InvokeRepeating()

InvokeRepeatingはx秒に関数を呼び出して、y秒ごとに繰り返し呼び出すことができます。使い方は、

といったように使います。実際に使ってみましょう。スタートから1秒たったら呼ばれ、2秒ごとに呼び出されるコードを書きます。

実行結果は、

CancelInvoke()

CancelInvokeはInvokeの処理を取り消すことができます。例えばスペースボタンを押したらInvokeRepeatingの処理を取り消すことができます。

実行結果は、

IsInvoking()

IsInvokingはInvokeが呼び出されているかをbool型で返します。

このコードはスタート関数の中でCancelInvoke()を呼び出し、その前後でIsInvokingの挙動はどのように変わるか確認するコードです。CancelInvoke()が呼び出される前はInvokeが呼び出されているのでtrueを返し、呼び出されたあとはfalseを返すはずです。

実際にそうなるか確認してみましょう。実行結果は、

予測した通りになっていますね。

invokeに対するよくある疑問

invokeとコルーチンの違い

感覚的な違いだと、invokeは簡単で、コルーチンは少し難易度が高いといった点で異なります。処理内容の違いでは、コルーチンは一連の流れの中で数秒後の処理を書けるがInvokeは書けないといった違いがあります。

例えばコルーチンを使えば『オブジェクトを作り、5秒後に消す』という一連の処理を一つにまとめて書くことができます。

一方でInvokeは『5秒後にオブジェクトを作る』や『5秒後にオブジェクトを消す』といったような形式でしか書けず、一連の処理は記述できません。

invokeが呼ばれないのはなぜ?

invokeが呼ばれない理由として考えられるのは書き間違いです。よくある間違いとしては引数の取り方ですね。

Invokeの一つ目の引数はString型である必要があります。ですので、invokeが呼ばれない場合は『” ”』を忘れているのかもしれません。

まとめ

いかがでしたか?この記事ではinvokeについて扱ってきました。invokeは数秒後の処理を簡単に行うことができるので、使いこなせるようになりましょう!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

sato

sato

学生時代を含めると、かれこれ10年以上プログラマーとして過ごしています。
様々な言語や環境、プロジェクトに関わってきましたので、より実践的な記事をみなさんにお届きるよう情報発信していきます!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説