普通にC#のクラスを使うだけなのだけど、「 Unity タイマー処理 」という感じでタイマーについて探すと大体においてStartCouroutine
かInvoke
が出てきて、なかなかこのタイマーにたどり着かなかったのでメモ。
ちなみにMonobehaviour
を継承しないとStartCouroutine
、Invoke
が使えないためです。
(Unityではそもそもそうやらねーよ!っていうツッコミがあればお願いします><)
System.Timers.Timerを使う
System.Timers.Timerクラスを使ってタイマーを実現します。
タイマーのセットアップ方法は以下。
using System.Timers;
// ... 中略
void Start() {
// タイマーを生成
System.Timers.Timer timer = new System.Timers.Timer(2000f);
// コンストラクタで設定しない場合は以下で設定可能
// timer.Interval = 2000f;
// 繰り返し処理をするか(繰り返す場合は`true`。デフォルト)
timer.AutoReset = false;
// コールバックを設定
timer.Elapsed += (System.Object source, ElapsedEventArgs e) => {
Debug.Log("The timer has done.");
// timer.Stop();
// timer.Close();
// timer.Dispose();
};
// タイマーを実行
timer.Start();
}
Elapsed
が、規定時間経過後に呼び出されます。(繰り返しの場合は規定時間間隔で呼び出される)
あとはその中に必要な処理を記述してやればOKです。