ぱふの自由帳

ぱふの技術ブログ。メインはUnity。最近はUnity1Weekの放送してます。良ければフォローお願いします、、

Time.timeScaleの効果について

連投3つ目です。毎日書いてる風にしようかと思ったんですが面倒なので一気に投稿します。今回はTime.timeScaleを簡単にまとめます。

Time.timeScaleについて

ゲーム内の時間を操作することができます。Time.timeScale = 0であるとゲーム内の時間が止まります。Time.timeScale = 1であれば現実の時間と同じ時間でゲームが動きます。しつこいですが、Time.timeScale = 0.5であるとゲーム内の時間が半分となり、いわゆるスローモーションになります。

Updateは止まらない!

最初はバグかと思いました。本当に。「止まってないじゃん」って。
実はTime.timeScale = 0は全ての関数が動かなくなる訳ではありません。
よく考えると当たり前ですね。どうやって復帰するんだよって話です。

止まるもの / 止まらないもの

止まるものとしては以下のようなものです。

  • アニメーション

  • Update / LateUpdate関数内の物理挙動系

  • FixedUpdate関数

止まらないものとしては以下のようなものです。

  • Update / LateUpdate関数内の物理挙動以外

  • GUI

止まらないものはどうやって管理されている?

どうやらTime.realtimeSinceStartupを使っているようです。Time.realtimeSinceStartupTime.timeScaleに関係なくスタート時からの経過時間(=現実時間)を持っている変数です。

おわり

知ってる人からすると当たり前なんでしょうが…最初は戸惑いました..orz
意識して使っていきましょうー!

初心者の方や熟練者の方を問わずTwitterのフォローお待ちしています…(`・ω・´) ミナサマヨロシク!