【「1フレームあたりの処理が500000個を超えました!」と出てきた】


【目標】
「1フレームあたりの処理が500000個を超えました!」と出るエラーを解消する

ウディタに少し慣れたころからよく出会う、このエラーメッセージの原因と対処法を理解します。
一度理解してしまえば、次からはとっさに対応できるようになりますよ。


ウディタ(Ver.1.31段階)では1フレーム中(=1/60秒)の間の処理は50万個が限界です。
つまりこのエラーは1フレーム中に50万個以上の処理をしてしまっているのが原因です。
では、何故このようなエラーが起きるのでしょうか。

【無限ループに陥っている場合】
「無限ループ」とは、あるループ内で、
それを抜け出すことができず、無限に同じ処理を繰り返すことです。
この結果、1フレーム内での処理が50万個を超えることがよくあります。
主な原因は以下の二つです。

@ループに「ループ中断」がない
ループが中断されないため、
50万個どころか無限にループし続けている状態です。
ループの適切な位置に「ループ中断」を入れることで、
エラーが解消することがあります。
◆「ループ中断」を入力するには
・マップイベントエディタを開いて、
 「■コマンド入力ウィンドウ表示■」をクリックしてください。
・上部タブを「その他1」に切り替えます。
・上部タブより少し下にある「ループ中断」をクリックします。

【One Point!】
また、ループ内で条件を満たすことができずに、
「ループ中断」を実行できていない場合も考えられます。
以上、以下、より大きい、未満、きちんと条件を満たせているか、
条件分岐に使っている変数が間違っていないかを確認しましょう。

Aイベントの自動実行
自動実行イベントは
「実行し終わっても自動的に、最初からまた同じことを繰り返す」
という性質を持っているので、
これも一種の無限ループになってしまう場合があります。
この場合、原因である「自動実行」はループではなくイベントなので、
ループ中断の代わりに「イベントの一時消去」を使ってください。
◆「イベントの一時消去」を入力するには
・マップイベントエディタを開いて、
 「■コマンド入力ウィンドウ表示■」をクリックしてください。
・上部タブを「その他1」に切り替えます。
・下段の下から3つめにある「イベントの一時消去」を選択。
・対象は「このイベント」にして、フェードは[0]を入力します。
・設定できたら「入力」ボタンをクリック。

【One Point!】
この場合も、自動イベントの開始条件が満たされ続けているために
イベントが起動し続けている、と言いかえることができます。
つまり、自動イベントでは、イベント自体を消してしまう方法の他にも
イベントの最後で条件を満たさない状態にしてやることでループから抜ける
ということもできるのです。

【単純に処理がオーバーしている場合】
アクションゲームなどで並列イベントを使う場合等によく起こります。
適切な場所にウェイトを挟むか、処理数を減らすことが主な対策法です。

◆「ウェイト」を入力するには
・マップイベントエディタを開いて、
 「■コマンド入力ウィンドウ表示■」をクリックしてください。
・次に、上部タブを「その他1」に切り替えます。
・下段の下から2つめの「ウェイト  フレーム」を選択してください。
・最後に、右下の「入力」をクリックすると、
 イベントに1フレームのウェイトが入力されます。


<執筆者:ウディタ公式ガイド執筆コミュ。


【←にフレームが表示されていない方はここをクリック】