さけのさかなのブログ

同人ゲーム開発やってます。Unity使ったりする。

【Unity】複数個所から安全にTime.scaleを操作する

あかんパターン

 たとえば一時停止処理などでTime.scale0fを入れて時間を止め、なんやかんやした後に1fを入れて戻す処理を書くとする。

 この時、なんやかんやしてる内部でTime.scale1fを入れてしまうと、勝手に時間が動き出してしまいマズイ。

やること

 いろんなところでTime.scaleを操作すると何かと問題が起こりやすい。そこで管理クラスを作る。

コード

gist.github.com

使い方

Time.scale = 0f;

// なんやかんや

Time.scale = 1f;

としているところを

var timeScaler = new TimeScaler();
timeScaler.SetScale(0f);

// なんやかんや

timeScaler.SetScale(1f);

 とする。

 変更した本人が1fに戻さないと永遠に戻らないので注意。それが流儀。