В проекте есть некий код для определения слоев
List<RaycastResult> results = EventSystem.current.Raycast (pointMouseBegin, LayerMask.NameToLayer ("SwipeActive"));
if (results.Count > 0) {
Debug.Log ("Swipe count 1");
isClick = true;
}
скрипт:
public static List<RaycastResult> Raycast(this EventSystem system, Vector2 mousePosition, LayerMask layer)
{
List<RaycastResult> raycast = new List<RaycastResult>();
PointerEventData eventDataCurrentPosition = new PointerEventData(system);
eventDataCurrentPosition.position = new Vector2(mousePosition.x, mousePosition.y);
List<RaycastResult> results = new List<RaycastResult>();
system.RaycastAll(eventDataCurrentPosition, results);
foreach (RaycastResult result in results)
{
if (result.gameObject.layer == layer)
{
raycast.Add(result);
}
}
return raycast;
}
он работает только на UI в канвасе, на простом объекте с Sprite нет, что не так ?
Посмотрите статью с хабра, чтобы понять как и с чем работает EventSystem. Если кратко, то с объектами Unity UI ( с помощью Graphics Raycaster), а так же с 2d и 3d физикой (Physics 2D Raycaster и Physics Raycaster), таким образом, EventSystem не должен работать с простыми Sprite, только если вы не добавите к ним BoxCollider, либо BoxCollider2d.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости