コンテンツへスキップ

Unityでpause

  • 日記

ゲームにポーズは必須なわけですが、とかいいつつ今までつけてませんでしたが、そもそもUnityはあまりそのへんが考慮されてないので自分でどうにかせんといかんわけですが。

適当にググると出てくるのが、Time.timeScaleを0にするってやつですが、これするとポーズ中のメニュー処理など、どこか動かしたい時に不便でしかたがないので、結局ちゃんとフラグを立てて処理するのがいいようで。

Update内の処理は最初にチェックしてやればいいんですが、コルーチンの方はなかなか面倒だったり。特にWaitForSecondsが使えないのが困るので、ここを拡張したかったんですが、どうも調べてもわからなかったので、処理を待つコルーチンを呼び出すようにしてみました。

pauseってのがフラグだと思ってください。グローバルな変数にしておくと楽でいいですな。

引数なしの方は毎フレーム呼び出すときにyieldだけ書いてたところを置き換える感じ。

あとはアニメーションの停止などもしないとダメなんですが、これもUpdate内でちゃんと丁寧にチェックしてやるほうがいいんじゃないですかね。

ただ丁寧に個別処理するってのはそれだけミスも増えるので、もっとエンジンレベルでどうにかしていただきたいところ。つか内部時間は複数チャンネル持って欲しいですよね。擬似的な処理落ちとかも組みやすくなるし。