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