Game Maker Language リファレンス > 組み込み関数 用途別 > 2D グラフィック機能 > Drawイベントについて
Drawイベントカテゴリは、ゲームを実行したときに画面に表示されるものを制御するすべてのイベントを持つカテゴリです。 ゲームのさまざまな描画要件を適切に処理するために、さまざまなイベントに分割されています。下の画像は、各イベントが実行される順序を示しています。
通常の Drawイベント は、描画開始(Draw Begin)、標準描画(Draw)、描画終了(Draw End)の3つのサブタイプに分類されます。 一般に、標準の Drawイベント を使用するだけでよく、ルーム内のすべてのインスタンスがこのイベントをゲームの各ステップでトリガーするので、インスタンスが可視である限り、このイベントは常に呼び出されます。 フラグは true に設定されています。 オブジェクトのプロパティでこのサブイベントに何も定義していなくても(つまり、コードもアクションもない)、オブジェクトにスプライトが割り当てられている場合は、トリガーされる Draw イベント がまだあることを理解することが重要です。 これは、GameMaker Studio 2 には Drawイベントで描画する方法が2つあるためです。
残りの Draw イベント については、以下のセクションで説明します。
メインのDrawイベントの他に、Draw BeginイベントとDraw Endイベントもあります。これらは、標準のDrawイベントとまったく同じように動作します(つまり、ゲームのすべてのステップで、すべてのビューポートに対して、何を入れても何でも描画します)。ただし、明示的に追加されていない場合、「デフォルトの描画」は行われません。オブジェクト、それらは常に標準のDrawイベントの前/後に実行されます。したがって、ゲームの実行中は、常にすべてのインスタンスのDraw Beginイベントがあり、次にすべてのインスタンスのDrawイベントがあり、最後にすべてのインスタンスのDraw Endイベントがあります。
このようにして、1つのインスタンスのDraw Beginステップで描画または描画プロパティを設定し、標準の Drawイベント または Draw Endイベント を持つすべてのインスタンスがこれらのプロパティを使用するか、最初のインスタンスが描画したものの上に描画するようにします。基本的に、Begin Stepイベント と End Stepイベント のように、特定のものが特定の時間に描画されることを保証する確実な方法です。
GameMaker Studio 2で描画するときに注意すべき点がいくつかあります。それが、描画しているスプライト、シェーダー、3Dバッファーのいずれであってもです。
Draw GUIイベントタイプはDraw Eventカテゴリに分類され、特にビューカメラのスケールや回転の影響を受けないGUI要素を描画するために設計されています。これは、部屋内のインスタンスの位置や現在のカメラビューの位置に要素のすべての配置を基にする必要なく、HUDまたはユーザーインターフェイスのすべての要素をインスタンスに描画できることを意味します。
これらのイベントで描画するときは、カメラビューがアクティブであり、(0,0)が常にアプリケーションサーフェスまたはディスプレイの左上隅であっても、描画座標は変化しないことを理解することが重要です(次の注を参照)このセクションの下部)、およびデフォルトの幅と高さは、アプリケーションサーフェスに対して1:1です。Draw GUI Beginイベント が最初にすべてのインスタンスを描画するため、異なるレイヤーの異なるインスタンス間(上位レイヤーのインスタンスは下位レイヤーのインスタンスの下に描画されます)とイベント自体の内部でも深度の順序は維持されます。標準の Draw GUI はその上のすべてのインスタンスに対して描画し、最後に Draw Gui Endイベント がトリガーされます。
このようにして、Draw GUI で物事を描画したり、描画プロパティを1つのインスタンスで開始したり、標準の Draw GUIイベント または Draw GUI Endイベント を持つすべてのインスタンスがこれらのプロパティを使用したり、最初のインスタンスが描画したものの上に描画したりできます。基本的に、これは、Begin Stepイベント と End Stepイベント のように、特定のものが特定の時間に描画されることを保証する確実な方法です。
これらのイベントは、通常の Drawイベント と組み合わせて使用することもできます(通常のカメラビューの位置、スケール、回転の影響を受けます)。 Drawイベント はないがDraw GUIイベント はある場合でも、GameMaker Studio 2はデフォルトでインスタンスにスプライトを描画します(それがある場合)。
他の Drawイベント に関連して、DRAW GUI イベント は常に、通常の Drawイベント で描画されたものの上に描画されます。したがって、Draw GUIイベント を使用して下位レイヤーにインスタンスがある場合、通常の Drawイベント を使用して上位レイヤーにあるインスタンスの上に描画されます。両方のインスタンスに Draw GUIイベント がある場合、レイヤーの順序が考慮されます。
Pre Draw イベントと Post Drawイベントは、Drawイベントカテゴリの一部です。 ただし、他のDrawイベントとは異なり、これらは表示バッファーに直接描画されます。これは、現在表示されているすべてのビューポートの合計スクリーンスペースのサイズ、またはビューポートを1つだけ使用するかまったく使用しない場合のウィンドウサイズになります。 以下の画像はこれを示しています:
したがって、PreまたはPostの Drawイベント を使用している場合は、全画面のレンダーターゲット(表示バッファー)に描画します。これは、すべてのビューポートを合わせるウィンドウと同じサイズになります。アクティブなビューポートがない場合、これは代わりにウィンドウ自体のサイズに設定されます。
Pre Draw イベント は他の Draw イベント の前にトリガーされ、その中で値を設定したり、描画プロパティを設定したり、ビューポートやGUIレイヤーのサイズを気にすることなく描画したりできます(GUIレイヤーのサイズは、画面バッファですが、GUI解像度をコードで設定できるため、そうでない場合があります。
このイベントは、通常の描画で表示バッファがクリアされる前に発生することに注意してください。つまり、ルームエディタでビューのクリアをオフにしないと、最初のビューポート描画として、Pre Drawイベント で描画されたものは何も表示されません。クリアします。ビューポート自体を透視できるようにする場合、またはビューポートをまったく使用しない場合は、ルームエディタで背景色をアルファ0に設定する必要もあります。
Draw End イベント は、すべての標準 Draw イベント の後で、Draw GUI イベント の前にトリガーされます。Post Draw イベント と同様に、表示バッファのサイズに基づいており、Draw GUI イベント の前に配置されるため、HUDに干渉することなく、後処理効果やその他のもの(HUD や GUI)を全画面ベースで簡単かつ簡単に実行できます。
このイベントタイプはDraw Eventカテゴリに分類され、実際には何も描画しませんが、ディスプレイバッファーの変化に反応します。具体的には、ゲームウィンドウのUWPディスプレイバッファーサイズの変化に反応するように設計されています。 「スナップ」されます。
UWPターゲットプラットフォームでは、ゲームウィンドウの「スナップ」(たとえば、ユーザーがウィンドウをディスプレイの横にドラッグしたとき)からディスプレイバッファーのサイズ変更をキャッチすることが重要です。 このイベントはそれだけを行い、ウィンドウが変更されるたびにトリガーされ、必要に応じてビューのサイズを変更したり、HUD要素を再配置したりするカスタムコードをここに追加できます。 この関数は、これらのことを常にチェックするステップイベントコードを回避するための便利な方法として提供されています。