Настройка курсора мыши

Возможно, вам захочется изменить внешний вид курсора мыши в вашей игре, чтобы он соответствовал общему дизайну. Существует два способа настройки курсора мыши:

  1. Используя настройки проекта

  2. Используя скрипт

Использование настроек проекта - это более простой (но более ограниченный) способ настройки курсора мыши. Второй способ более настраиваемый, но затрагивает создание сценариев.

Примечание

Вы можете отобразить "программный" курсор мыши, скрыв курсор мыши и переместив Sprite в положение курсора в методе _process, но это добавит по крайней мере один кадр задержки по сравнению с "аппаратным" курсором мыши. Поэтому рекомендуется по возможности использовать описанный здесь подход.

Если вам нужно использовать "программный" подход, подумайте о добавлении шага экстраполяции, чтобы лучше отобразить фактический ввод мыши.

Используя настройки проекта

Откройте настройки проекта, перейдите в Display>Mouse Cursor. Вы увидите Custom Image и Custom Image Hotspot.

../../_images/cursor_project_settings.png

Custom Image - это желаемое изображение, которое вы хотите установить в качестве курсора мыши. Custom Hotspot - это точка на изображении, которую вы хотели бы использовать в качестве точки обнаружения курсора.

Примечание

Пользовательское изображение должно быть меньше 256x256.

Используя скрипт

Создайте Node и прикрепите следующий скрипт.

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);
}

Примечание

Проверьте Input.set_custom_mouse_cursor().

Демо-проект

Узнайте больше, изучив этот демо-проект: https://github.com/guilhermefelipecgs/custom_hardware_cursor

Список курсоров

Как описано в классе Input (см. перечисление CursorShape), существует несколько курсоров мыши, которые вы можете определить. Какие из них вы хотите использовать, зависит от вашего варианта использования.