方法1. ポーズした瞬間を静止画にして表示する
- ポーズ
- ポーズした瞬間のスクリーンショットを作って最前面に描画する
- 全てのインスタンスをdeactivateする
- ポーズ解除
- 全てのインスタンスをactivateする
- スクリーンショット削除
方法2. 全てのインスタンスの処理を止める
stepイベントの1行目にこんな感じで、ポーズ中は全ての処理を止める
if (pause) exit;
1の方法がたぶん一般的で、いろんなチュートリアルで解説されてる方法ですが、いくつかのインスタンスをdeactivateしてる状態でこのポーズ処理をするとdeactivateしていたものが意図せずactivateされてしまうなどの問題が起こるので、それを回避する策が必要になります。
2の方法はAlarmを走らせてるときはAlarmも止める処理が必要になります。
他にいい方法はあるんでしょうか。
みなさんはどうやってポーズ機能を実装してるでしょうか。
1ですね。
なんかいい方法がありそうですね。
1の方法は知りませんでした(汗)。
自分はポーズ画面中にメニューを出すので、全部止めるというのは使えませんが…。
パーティクルに関しては止め方が見つけられなかったので、パーティクルを発生させるオブジェクトおよび、そのパーティクルと関連するオブジェクトに関しては、仕様と割り切って止めていません。
この場合だと、雨とそれが弾けたように見せる床のオブジェクトですね。
Alarm に関しても同様で、ポーズが入っても問題ない箇所にしか使用しないように設計していますね(^^;)
Alarmはまだ設計しやすいんですが、パーティクルはどうにも(^^;)。
調べたけど、どうにも見つからなかったので、ないんだろうなぁ…。
particle_system_auto_updateでfalseにして、particle_system_updateを自分で呼ぶ出せばいけそうです
particle_system_auto_update
が見つからなかったのですが、
part_system_automatic_update
でしょうか。
たしかにゲームの一時停止などに使うみたいなこと書いてますね。
試してみます!
ありがとうございます!!!
自分も1ですね。Localにあるプロジェクトのフォルダ内にpngのスクショを作ってます。
Shaun Spaldingさんの新しいチュートリアルがあったので。
方法1のやりかたですね。
GameMaker - Simple Pause Tutorial
https://www.youtube.com/watch?v=dNiLIX8jNOM