Unityの簡単遅延処理 | SAT-BOX BLOG

SAT-BOX BLOG

SAT-BOX開発チームによる最新情報や開発アプリを紹介します。
Androidをメインに、iOSアプリも開発しております。

こんにちは、SAT-BOXこうもりです。


そろそろ今使っているスマホのバッテリーがダメになってきました。


使い始めて2年ちょっとぐらいですが、充電器を繋げながら使う機会が多いので普通に使うよりも消耗が激しかったようです。

内蔵型なので交換ではなく修理でデータも初期化されてしまいますので新しいのを買おうと思っているんです。

ただ欲しいシリーズの最新が11月下旬発売でバッテリーが完全にダメになるのが先か、発売が先かでハラハラしている今日此の頃です。



今日はUnityで処理を遅延される簡単な方法を紹介したいと思います。

早速一つ例を


void Start(){

Invoke("Call",1);

}

void Call(){

Debug.Log("Call");

}


Invokeメソッドは第一引数に呼び出すメソッド名を文字列で、第二引数に呼び出す時間を渡します。

これでStartメソッドでInvokeが呼ばれると1秒後にCallメソッドが呼ばれます、簡単ですね。


ただInvokeはメソッドを指定秒過後に呼ぶだけですので、もう少し細かいことをするのならコルーチンを使います。

コルーチンは一旦処理を中断し、中断した場所から処理を再開することができます。


void Start(){

       // メソッドはStartCoroutineの引数として渡します。

       StartCoroutine( _Call(2.0f) );

}

private IEnumerator _Call(float _waitTime = 0){

      // ここで処理を中断します

       yield return null;

      // 次のフレームでここから再開されます


      // 引数で渡された2.0fWaitForSecondsに渡して

      // 2秒間中断します

       yield return new WaitForSeconds(_waitTime);

      // 2秒後にここから再開します


       float time = 0.0f;


      // 1秒経つまで毎フレーム中断します

       while(time <= 1.0f){

              Time += Time.deltaTime;

              Yield return null;

       }

      // 1秒後にここから再開します

}


こんな感じで処理を自由な時間やタイミングで処理を中断したり再開したりすることができます。



今日はこれでおしまいです。


皆さん楽しいゲームライフを送りましょう!



ワクワクできるアプリをガンガン開発リリース中!

ホームページはこちら↓