はじめに
MMF2は、通常ではフレーム開始前にそのフレームで使用されているオブジェクトやサウンドのデータをメモリにロードするようになっているため、大量のグラフィックやサウンドを使用していると、フレームが開始されるまでの間に数秒間のロード時間を必要としてしまう場合があります。
しかし、以下の方法により、特定のオブジェクトやサウンドのデータをフレーム開始前にロードしないようにして、フレーム開始までのロード時間を短縮することができます。
この方法でロードしないようにしたデータは、それが初めて使用される時にロードされるため、データ量によってはプレイ中にロードのためにフリーズしたようになる可能性があります。
最初に止まるか途中で止まるかトレードオフで考えてください。
フレーム開始前にデータをロードしないようにする
背景・アクティブオブジェクトのデータをロードしないようにする
- アクティブオブジェクト
プロパティのランタイムオプションにある「開始時に作成」のチェックを外し、そして「呼び出し時にロード」にチェックを入れます。
これでそのアクティブオブジェクトがフレーム開始前にロードされなくなります。
「呼び出し時にロード」オプションは、そのオブジェクトが「作成」または「発射」でフレーム内に現れる際に初めてメモリへ読み込まれるようにするというものなので、「開始時に作成」が有効になっていると最初からそのオブジェクトがフレームに存在することになり、結局開始前にデータがロードされることになってしまいます。「呼び出し時にロード」は必ず「開始時に作成」を無効にすることとセットで使用してください。
- 背景オブジェクト
背景オブジェクトの場合もアクティブオブジェクトと同じで「呼び出し時にロード」にチェックをします。
ただし、こちらには「開始時に作成」はありません。ではどうやって使用/不使用を判断するのでしょうか?
背景オブジェクトの場合は「表示領域内に在るかどうか」で判断されるようです。表示領域は実行した時に実際に表示される画面の領域のことです(動作領域ではありません)。
「呼び出し時にロード」が有効の場合、表示領域内に無い背景オブジェクトはメモリに読み込まれず、スクロールするなどして少しでも見えたら、その時にメモリに読み込まれるようです。
サウンドデータをロードしないようにする
データエレメンツを表示しサウンドのタブを開いてください。
リストからサウンドを選択し、右下のオプションを変更します。
- プリロード
フレーム開始前にデータがメモリへロードされます。 - 呼び出し時にロード
サウンドが初めて使用される時にデータがメモリへロードされます。 - ディスクから再生
メモリへはロードされずハードディスク上から随時読み込まれます。
ロード画面を表示する
上記の方法を用いてロードするデータを選別しても、フレーム開始前のロードが避けられないこともあると思います。ロード中はアプリケーションの動作が完全に止まってしまうため、一見するとフリーズしたかと誤解されかねません。そのためにも、ロード中であることを示す表示を出してみましょう。
「Now Loading」と書かれた画像を設定したアクティブオブジェクト、または同じ文章が書かれた文字列オブジェクトなどを用意します。そしてそれをロード時間の発生するフレームへ移動するイベントと同じタイミングで表示させます。画面はフレームのデータがロードし終わるまで切り替わらないので、それまでの間「Now Loading」の表示がされるということになるわけです。
先ほども書いたとおり、ロード中は動作が完全に止まるため、アニメーションやロードの状況を示すカウンタなどは表示できません。