時限で消したいオブジェクトにのっける。, publicでlife_timeを定義してあるので、 たとえば、「Misson Complete! 呼び出される関数の方は内部でyield return を実行して IEnumerator のインスタンスを返す必要がある。. (adsbygoogle = window.adsbygoogle || []).push({}); Time、Coroutine、StopWatchです。それぞれの特徴は以下の通り。, StopWatch:Unityのシーン内ではなく、スクリプト上で経過時間を計測できる(処理にかかる時間を計測できる、開発用), 以上3つの中で1つでも知らないものがある方は、この記事を読む価値があります。3つ覚えておくと、使いわけることでスクリプトが楽にかけるようになりますよ。, まず初めにTimeの使い方を解説します。Timeはもっとも簡単に実装できるのでまずはTimeの使い方を覚えておくことをおすすめします。, Unityで時間を計測したい人が主だと思うので、以下ではTimeを用いて、経過時間をコンソール上へ出力するコードを解説します。, Time.deltaTime:最後のフレームを完了するのに要した時間(フレーム毎の時間), 他にもTimeを取得できるインターフェースは多々ありますが、この2つを使えれば十分でしょう。, Time.timeはゲーム開始から経過した時間を簡単に出力できます。ただし、読み取り専用のため、以下のように値を代入することはできません。, つまり、Time.timeは計測するスタート位置を指定できないというデメリットがあります。, ちなみに残り時間を計測したいなら、60f – Time.timeのように実装できますね。, Time.deltaTimeで計測開始、計測停止位置を指定できるコードを動かすと以下のようになります。, Time.deltaTimeは最後のフレームにかかった時間を読み込めます。つまり、Update()内に elapsedTime += Time.deltaTimeのように足し合わせていくことでタイマーのように経過時間を計測することができます。, Time.deltaTimeはゲームを開始した時間に依存しないので、このように計測位置を自由に変更できるのが強みです。, ある特定の処理時に時間を計測する際は、Time.deltaTimeを格納した変数を初期化するだけで、再度時間の計測が行えます。, 処理A→X秒待機→処理B→Y秒待機→処理C→・・・のように異なる処理を待機時間を指定して実行できます。, これを言い換えると、Coroutineは処理を中断・再開することが自由にできるということです。, マリオブラザーズでいうキラー大砲のようなイメージですね。一定時間の間を空けてキラーを飛ばす処理はCoroutineに近いと思います。, StopWatchはUnity上の処理にかかる時間ではなく、スクリプト内で処理にかかる時間を計測します。そのため、Unity上で時間を計測するのではなく、開発時に処理の負荷を調べるために便利かと思います。, StopWatchはStart, Stop, Elapsedなど単純なメソッドの呼び出しで操作できるため、使い勝手がいいのも魅力です。, 時間計測したい処理をStartとStopではさんであげるだけで、処理にかかる時間を計測できます。, 以上でUnityで時間を扱う方法の解説は終わりです。今回紹介した3つはどれも長所と短所があるので使い分けることで時間を思い通りに扱えるかと思います。. Unityではコルーチンを使うと一定時間毎に何らかの処理を行わせる事が出来ました。, InstantiateGameObjectメソッドはインスペクタで設定したゲームオブジェクトをインスタンス化するメソッドです。, Random.insideUnitSphereは半径1の球体の内部のランダムな点を返します。, Random.rotationの代わりにRandom.rotationUniformを使っても同じです。, Startメソッド内でInvokeの第1引数にメソッド名を指定し、第2引数に何秒後に実行するかを指定します。, 今回の場合はこのスクリプトを設定したゲームオブジェクトが登場してから5秒後にInstantiateGameObjectメソッドを実行します。, さきほど紹介したInvokeで指定時間後にメソッドを実行する事が出来ましたが繰り返し処理を行う事は出来ませんでした。, ↑の例では5秒後にInstantiateGameObjectメソッドを実行した後、2秒間隔でInstantiateGameObjectメソッドを実行するようになります。, これで定期的に処理をする事が出来るようになりましたが、開始したら停止する術も必要です。, CancelInvoke関数を使うと実行しているInvokeを停止する事が出来ます。, ↑の例ではマウスの左ボタンを押したら普通にInstantiateGameObjectメソッドを呼び出し、マウスの右ボタンを押したらInvokeを停止します。, InvokeやInvokeRepeating、CancelInvokeは定義されているクラス名を省略してそのままメソッド名で使用出来ていますが、, これはそれらがMonoBehaviourクラスで定義されていているからです(JavaScriptの場合はデフォルトでMonoBehaviourを継承して作成されます)。, Invokeのサンプルが作成出来たので、Main Cameraに作成したスクリプトを取りつけインスペクタでインスタンス化するゲームオブジェクトを設定し実行します。, ↑のように最初InvokeとInvokeRepeatingが実行され5秒後にInstantiateGameObjectが実行されるのでゲームオブジェクトが2つ表示されます。, その後2秒間隔でInvokeRepeatingで指定したInstantiateGameObjectが実行されていきます。, マウスの右ボタンを押してCancelInvokeをするとInvokeRepeatingの実行が停止されます。, Invokeを使えばコルーチンを使うよりもわかりやすく簡単に定期的な処理を実行する事が出来ます。, メソッド名指定の所で引数を指定出来なかったり、戻り値もないので使いどころとしては指定時間後に何らかの処理をしたい時や単純な繰り返し処理をさせたい時に使うといいかもしれません。, メールはこちらにお願いします(記事に関する質問は送らないでください)。

Zenfone Max Pro M2 ɛ話が繰り返し停止し Áい Áす 4, Âリカリ梅 Ľり方 Áがり 5, Ɨ向坂46 Ãゴ Ãォント 6, Iphone Ãィルム żり替え 13, Áずかちゃん Âラスト Áわいい 11, ƙ代劇 ɢ Ő前 4, Áしり Á肉をつける ɣべ物 11, Ãイエース Ãイール 18インチ 4, Ãレルヤ Ƅ味 Ɨ本語 5, Ãン Ãョジュ Instagram 12, Css Nav 2段 4, ĸ界史 Ɲアジア Ŝ図 5,

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.