Game Maker Language リファレンス > 組み込み関数 用途別 > リソース操作・ルーム > 一般的なレイヤー関数 > layer_script_begin()
この関数を使用すると、スクリプトをレイヤーに割り当てることができ、レイヤーがレンダリングされる前にスクリプトが呼び出されます。 レイヤーにスクリプトを追加すると、この方法でさまざまな描画イベントのそれぞれの開始時にスクリプトが実行されるため、現在レンダリングしているイベントが割り当てられているスクリプトをチェックインして、コードを適合させることができます。 これは、event_type または event_number、あるいはその両方をチェックすることで実行できます(以下の拡張例を参照)。 この関数は、描画イベントや Stepイベント で呼び出されることを意図したものではなく、部屋の開始時に Room Creation Code またはインスタンスの Create イベント / Room Start イベント でのみ呼び出す必要があることに注意してください。
layer_script_begin
この拡張された例では、最初に、特定のレイヤーが描画されたときにこのスクリプトが実行され、シェーダーが正しく機能するように、いくつかのシェーダー均一データを設定する単純なスクリプトの構造を示します。 この例では、どのイベントが呼び出されているかを確認する方法に注目する必要があります。スクリプトの残りの部分は、処理が必要な特定のイベント(この場合は、メインの描画イベントのみ)でのみ実行されます。
/// scr_LayerShader_Start(); /// @description レイヤーの描画開始前に呼び出されるスクリプト if event_type == ev_draw // 描画イベント { if event_number == 0 { colour_to_find = shader_get_uniform(sShaderDemo5, "f_Colour1"); colour_to_set = shader_get_uniform(sShaderDemo5, "f_Colour2"); shader_set(s_ColourChanger); shader_set_uniform_f(colour_to_find, 1,1,1 ); shader_set_uniform_f(colour_to_set, 1,0,0 ); } }
次に、すべての描画が完了した後、シェーダーをリセットするコンパニオンスクリプトを用意します。
/// scr_LayerShader_End(); /// @description レイヤーの描画終了後に呼び出されるスクリプト if event_type == ev_draw // 描画イベント { if event_number == 0 { shader_reset(); } }
シェーダーを設定するためのスクリプトを定義したので、次に、レイヤーがそれらを呼び出すことを認識できるように、それらを特定のレイヤーに割り当てる必要があります。 これは、ルーム作成コード、またはいくつかのコントローラーオブジェクトのCreateイベントまたはRoom Startイベントで行われます(これらはすべてのステップで設定する必要はなく、ルームの開始時に1回、またはレイヤーが最初に設定されたときに設定する必要があります) 作成した):
// "instances" レイヤーを取得する var lay_id = layer_get_id("Instances"); // 開始スクリプト "scr_LayerShaer_Start" を設定 layer_script_begin(lay_id, scr_LayerShader_Start); // 終了スクリプト "scr_LayerShaer_End" を設定 layer_script_end(lay_id, scr_LayerShader_End);
この最後のコードブロックは、スクリプトをレイヤーに割り当てます。