2026-10-12 23:54:03 +03:00
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEngine.EventSystems;
|
|
|
|
|
|
|
|
|
|
// Проверка "палец/мышь сейчас над UI?".
|
|
|
|
|
// Нужна, чтобы клик по кнопке панели НЕ проходил насквозь в мир:
|
|
|
|
|
// не собирал ресурсы со здания под панелью, не улучшал Ратушу, не двигал камеру.
|
|
|
|
|
public static class UIBlocker
|
|
|
|
|
{
|
2026-10-28 22:11:36 +03:00
|
|
|
// Палец сейчас занят миром (например, игрок тащит призрак здания в режиме стройки) --
|
|
|
|
|
// камера в это время не двигается. Ставит и снимает тот, кто захватил ввод.
|
|
|
|
|
public static bool WorldInputCaptured;
|
|
|
|
|
|
2026-10-12 23:54:03 +03:00
|
|
|
public static bool IsPointerOverUI()
|
|
|
|
|
{
|
|
|
|
|
if (EventSystem.current == null) return false;
|
|
|
|
|
|
|
|
|
|
// мышь (редактор/ПК) и новый Input System
|
|
|
|
|
if (EventSystem.current.IsPointerOverGameObject()) return true;
|
|
|
|
|
|
|
|
|
|
// тач на телефоне (старый input module требует id пальца)
|
|
|
|
|
for (int i = 0; i < Input.touchCount; i++)
|
|
|
|
|
{
|
|
|
|
|
if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(i).fingerId))
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|