【補足】処理を遅らせる関数:Invoke(Unity編)

Unity補足、処理を遅らせる関数:Invoke

ごきげんよう、Budding Lab.編集部のゆくすぃです!
ここでは、ゲーム開発に関する補足情報をお伝えしています!

GameStartボタンをクリックすると効果音が鳴り、ゲームが始まる・・・これを実装するために「効果音を鳴らすスクリプト」と「シーンを切り替えるスクリプト」を準備してボタンにアタッチしたけれど、何故かクリック音が鳴らない!・・・なんてことがたまに起こります。

これは、効果音を鳴らす処理が実行される前にシーンが切り替わってしまうために起こります。つまり、効果音を鳴らす処理が実行されるまで、シーンを切り替える処理を遅らせれば良いわけです。

そこで、今回は「処理を遅らせる関数:Invoke(Unity編)」を解説します!

Invokeとは

Invokeとは、MonoBehaviourクラスに準備されたPublic関数の一つです。設定した時間(単位は秒)経過後にメソッドを呼び出します

関数:Invokeの書き方

Invoke(“実行する処理”, 秒数);

  • 実行する処理:シーンの切り替えなどを指定 ※遅らせたい処理を別に準備する必要があります
  • 秒数:遅らせたい時間を「1.0f」のように指定する ※末尾の「f」= float型を指定しています

Invokeの使い方

Invokeを使って、この記事の冒頭に挙げた例を解決してみましょう。

1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4 using UnityEngine.SceneManagement;
5
6 public class SceneChanger : MonoBehaviour
7 {
8    [SerializeField] private string _loadScene; // string型の変数_loadSceneを定義
9    
10   public void SceneChange()
11   {
12       SceneManager.LoadScene(_loadScene); // シーンを切り替える処理
13   }
14
15   public void SceneChangeInvoke()
16   {
17       Invoke("SceneChange", 1.0f); // 1.0秒後にSceneChangeメソッドを呼び出す
18   }
19 }

グリーンの文字10行目から13行目で、シーンを切り替える処理を纏めた「SceneChangeメソッド」を書いています。

オレンジの文字15行目から18行目で、1.0秒後にSceneChangeメソッド(シーンを切り替える処理)を呼び出す「SceneChangeInvokeメソッド」を書いています。

この「スクリプト:SceneChanger」をGameStartボタンにアタッチして、OnClickイベントにセットすれば、GameStartボタンをクリックした1.0秒後にシーンが切り替わります。
効果音を鳴らすスクリプトがアタッチされていれば、シーンが切り替わるまでの1.0秒間に効果音を鳴らす処理を実行できるでしょう。

まとめ

処理を遅らせる関数:Invoke、意外と簡単に使えるんだな・・・と、感じたのではないでしょうか。
たった数秒でも、タイミングを制御できるとゲームのクオリティが変わってきます。些細な違いですが、決して蔑ろにはできないですね!

以上、最後まで読んでいただき有難うございました!

よかったらシェアしてね!
  • URLをコピーしました!