Personnalisation du curseur de la souris

Vous pourriez vouloir changer l'apparence du curseur de la souris dans votre jeu afin de l'adapter au design général. Il y a deux façons de personnaliser le curseur de la souris :

  1. Utilisation des paramètres du projet
  2. Utilisation d'un script

L'utilisation des paramètres de projet est une façon plus simple (mais plus limitée) de personnaliser le curseur de la souris. La deuxième façon est plus personnalisable, mais implique un script.

Note

Vous pouvez afficher un curseur de souris "logiciel" en cachant le curseur de souris et en déplaçant un Sprite à la position du curseur dans une méthode _process, mais cela ajoutera au moins une frame de latence par rapport à un curseur de souris "matériel". Par conséquent, il est recommandé d’utiliser l’approche décrite ici chaque fois que possible.

Si vous devez utiliser l'approche "logiciel", envisagez d'ajouter une étape d'extrapolation pour mieux afficher l'entrée réelle de la souris.

Utilisation des paramètres du projet

Ouvrez les paramètres du projet, allez dans Display>Mouse Cursor. Vous verrez Custom Image et Custom Image Hotspot.

../../_images/cursor_project_settings.png

Custom Image est l'image souhaitée que vous souhaitez définir comme curseur de la souris. Custom Hotspot est le point de l'image que vous souhaitez utiliser comme point de détection du curseur.

Note

L'image personnalisée doit être inférieure à 256x256.

Utilisation d'un script

Créez un nœud et attachez lui le script suivant.

extends Node


# Load the custom images for the mouse cursor.
var arrow = load("res://arrow.png")
var beam = load("res://beam.png")


func _ready():
    # Changes only the arrow shape of the cursor.
    # This is similar to changing it in the project settings.
    Input.set_custom_mouse_cursor(arrow)

    # Changes a specific shape of the cursor (here, the I-beam shape).
    Input.set_custom_mouse_cursor(beam, Input.CURSOR_IBEAM)
public override void _Ready()
{
    // Load the custom images for the mouse cursor.
    var arrow = ResourceLoader.Load("res://arrow.png");
    var beam = ResourceLoader.Load("res://beam.png");

    // Changes only the arrow shape of the cursor.
    // This is similar to changing it in the project settings.
    Input.SetCustomMouseCursor(arrow);

    // Changes a specific shape of the cursor (here, the I-beam shape).
    Input.SetCustomMouseCursor(beam, Input.CursorShape.Ibeam);
}

Projet de démonstration

Pour en savoir plus, consultez ce projet de démonstration : https://github.com/guilhermefelipecgs/custom_hardware_cursor

Liste de curseurs

Comme documenté dans la classe Input (voir l'énumération CursorShape), il y a plusieurs curseurs de souris que vous pouvez définir. Le choix de ceux que vous voulez utiliser dépend de votre cas d'utilisation.