surface_set_target(surface_id);
Argument La description surface_id L'ID de la surface à définir comme cible de dessin.
Boolean
Avec cette fonction, vous définissez tout autre dessin sur la surface cible plutôt que sur l'écran et, de cette manière, vous pouvez indiquer à GameMaker Studio 2 de ne dessiner que des éléments spécifiques sur la surface spécifiée. S'il vous plaît noter que si vous n'appelez pas surface_reset_target Une fois que vous avez terminé, rien ne sera dessiné sur l'écran car tout autre dessin (même dans d'autres cas) sera fait en surface. Vous devriez également réaliser que rien ne sera vu si la surface elle-même n'est pas dessinée sur l'écran dans l'événement draw d'une instance. Vous pouvez également vérifier la valeur de retour de cette fonction en tant qu'outil de débogage pour vérifier si la cible de surface a été définie ou non, avec une valeur de retour de 0 étant un échec pour définir la cible et toute autre valeur positive réussie.
Une chose à noter est que les surfaces sont empilées de sorte que vous ne pouvez pas sauter d'une cible à l'autre et ensuite réinitialiser à la cible de tirage normale à la fin, mais vous devez ouvrir et fermer les cibles de rendu. Par exemple, cela ne fonctionnera pas correctement:
surface_set_target(surf1);
draw_text(32, 32, "surface1");
surface_set_target(surf2);
draw_text(32, 64, "surface2");
surface_reset_target();
Au lieu de cela, vous devez réinitialiser la cible pour chacune des surfaces que vous avez définies, tout comme vous devez utiliser les parenthèses d'ouverture et de fermeture {} pour les blocs de code. Donc, ce qui précède devrait être écrit comme ceci:
surface_set_target(surf1);
draw_text(32, 32, "surface1");
surface_reset_target();
surface_set_target(surf2);
draw_text(32, 64, "surface2");
surface_reset_target();
ou comme ceci:
surface_set_target(surf1);
draw_text(32, 32, "surface1");
surface_set_target(surf2);
draw_text(32, 64, "surface2");
surface_reset_target();
surface_reset_target();
if view_current = 0
{
surface_set_target(surf);
with (obj_Effect)
{
draw_self();
}
surface_reset_target();
}
else
{
draw_surface(surf, 0, 0);
}
Le code ci-dessus va vérifier pour voir quelle vue est en train d'être dessinée, et si c'est la vue [0], elle définit la cible du tirage sur une surface et dessine toutes les instances de l'objet "obj_Effect" avant de réinitialiser la cible. Si la vue n'est pas vue [0], la surface est dessinée sur l'écran.