TGViewer
🎮 IT Step by step | GameDev для начинающих 🚀 🎮 IT Step by step | GameDev для начинающих 🚀 @it_step_by_step · 112 subscribers
Post #75 373
Хотите сделать курсор в вашей игре уникальным и менять его иконку, когда мышь наводится на разные объекты? Вот подробная инструкция с примерами!

1. Замена курсора на свою картинку по умолчанию
Подготовьте изображение курсора (лучше PNG с прозрачным фоном), импортируйте в проект и в инспекторе установите Texture Type → Cursor.

Создайте скрипт:

public class CursorManager : MonoBehaviour
{
public Texture2D defaultCursor;
public Vector2 hotspot = Vector2.zero;

void Start()
{
SetDefaultCursor();
}

public void SetDefaultCursor()
{
Cursor.SetCursor(defaultCursor, hotspot, CursorMode.Auto);
}

public void ResetCursor()
{
Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
}
}

Добавьте этот скрипт на любой объект в сцене и в инспекторе назначьте defaultCursor.

2. Смена курсора при наведении на объект
Чтобы менять курсор при наведении на конкретный объект, используйте интерфейсы Unity IPointerEnterHandler и IPointerExitHandler из пространства имён UnityEngine.EventSystems.

Пример скрипта для объекта:

using UnityEngine;
using UnityEngine.EventSystems;

public class CursorChangerOnHover : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
public Texture2D hoverCursor;
public Vector2 hotspot = Vector2.zero;

public void OnPointerEnter(PointerEventData eventData)
{
Cursor.SetCursor(hoverCursor, hotspot, CursorMode.Auto);
}

public void OnPointerExit(PointerEventData eventData)
{
Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto); // Возвращаем стандартный курсор
}
}

Важно: Для работы этих интерфейсов объект должен иметь компонент Collider и сцена должна содержать EventSystem (обычно создаётся автоматически при добавлении UI).

3. Альтернативный способ с использованием Raycast (для 3D объектов)
Если вы не используете UI, а хотите менять курсор при наведении на 3D объекты, можно делать Raycast из позиции мыши:

using UnityEngine;

public class CursorRaycastChanger : MonoBehaviour
{
public Texture2D defaultCursor;
public Texture2D hoverCursor;
public Vector2 hotspot = Vector2.zero;

void Start()
{
Cursor.SetCursor(defaultCursor, hotspot, CursorMode.Auto);
}

void Update()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;

if (Physics.Raycast(ray, out hit))
{
if (hit.collider.CompareTag("HoverTarget"))
{
Cursor.SetCursor(hoverCursor, hotspot, CursorMode.Auto);
return;
}
}

Cursor.SetCursor(defaultCursor, hotspot, CursorMode.Auto);
}
}

Не забудьте назначить тег HoverTarget объектам, при наведении на которые курсор должен меняться.

Советы
✨Используйте маленькие изображения (например, 32×32 px) с прозрачным фоном.

✨Настройте hotspot - точку прицеливания курсора (обычно верхний левый угол или центр).

✨Следите, чтобы не было частых вызовов SetCursor без необходимости - это может влиять на производительность.

Официальная документация Cursor.SetCursor:
https://docs.unity3d.com/ScriptReference/Cursor.SetCursor.html

Сделайте управление курсором в игре удобным и стильным! Если возникнут вопросы - пишите в комментариях. ⬇️

#Unity #GameDev #Обучение
  • 👍 5
  • ⚡ 2
  • 🤔 2
  • 👌 2
More from @it_step_by_step
  1. Feb 14, 2026🎮Как опубликовать игру на JavaScript в GitHub Pages за 10 минут Хотите показать свою игру…
  2. Feb 2, 2026😳 «О чём это?»: Геймдев-сленг подростков — выпуск 7! 🎮 Ежемесячный словарь для родителей…
  3. Dec 31, 2025Поздравляю всех с наступающим Новым годом! 🥳🥳🥳❄️❄️❄️🎉
  4. Dec 23, 2025🧩 10 популярных жанров для мини-игр (с примерами) Платформер Пример: Celeste: Farewell (м…
  5. Dec 5, 2025Roblox заблокирован. Но дети 10–14 лет всё ещё могут создавать игры — и даже зарабатывать…
  6. Nov 29, 2025😳 «О чём это?»: Геймдев-сленг подростков — выпуск 6! 🎮 Ежемесячный словарь для родителей…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →