Avec cette fonction, vous pouvez assigner un script à un calque et il sera appelé avant le rendu du calque. Lors de l'ajout d'un script à une couche, celle-ci sera exécutée au début de chacun des différents événements de dessin, vous souhaiterez peut-être vérifier dans le script affecté quel événement est en cours de rendu et adapter le code en conséquence. Cela peut être fait en vérifiant event_type et / ou event_number (voir l'exemple étendu ci-dessous). Notez que la fonction n'est pas destinée à être appelée dans les événements de dessin ou les événements d'étape, mais doit seulement être appelée au début de la pièce dans le code de création de pièce ou dans l'événement Créer un événement / une pièce.
layer_script_begin
Argument La description layer_id La valeur d'ID unique de la couche à cibler (ou le nom de la couche sous forme de chaîne) script L'index de script à affecter à la couche
N/A
Dans cet exemple étendu, nous allons d'abord vous montrer comment un script simple est structuré pour définir des données de shader uniformes de sorte que lorsque le calque donné est dessiné, ce script sera exécuté et le shader fonctionnera correctement. Dans l'exemple, il est intéressant de noter comment nous vérifions quel événement est appelé afin que le reste du script ne soit exécuté que sur l'événement spécifique sur lequel nous devons le faire - dans ce cas, uniquement sur l'événement draw principal:
/// scr_LayerShader_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 );
}
}
Nous aurions alors un script compagnon pour réinitialiser le shader après que tout le dessin soit terminé:
/// scr_LayerShader_End();
if event_type == ev_draw
{
if event_number == 0
{
shader_reset();
}
}
Maintenant que nous avons défini nos scripts pour la définition du shader, nous devons les affecter à une couche spécifique pour que la couche sache les appeler. Cela se fera dans le code de création de salle, ou dans l'événement create ou room start d'un objet contrôleur (ils n'ont pas besoin d'être définis à chaque pas, mais plutôt une fois au début de la pièce ou au début de la couche créé):
var lay_id = layer_get_id("Instances");
layer_script_begin(lay_id, scr_LayerShader_Start);
layer_script_end(lay_id, scr_LayerShader_End);
Ce dernier bloc de code affecte les scripts à la couche.