Я работаю над проектом 2D Isometric RTS. Это как миллиарды или Starcraft. Но, работая над редактором карт, RayCast столкнулся с неразрешимой проблемой с NGUI. Хотя при щелчке мыши вы должны создать землю, UICamera.hoveredObject продолжит возвращать UIRoot
Сцены, возвращающие UIRoot
private void CreateTileOnMousePos()
{
Debug.Log(UICamera.hoveredObject);
if (UICamera.hoveredObject == null)
{
RaycastHit2D hit;
if (hit = Physics2D.GetRayIntersection(Camera.main.ScreenPointToRay(Input.mousePosition)))//, grid.unwalkableMask))
{
Node node = grid.NodeFromWorldPoint(hit.point);
Vector3Int pos = tilemaps[0].WorldToCell(node.worldPosition);// + tilemaps[0].tileAnchor);
node.enviormentTile = EnviormentTile.Gress;
tilemaps[0].SetTile(pos, tilePrefabs[0]);
}
}
}
Если SetActive UIRoot выключен,конечно это работает. Выберите другую плитку или сохраните / загрузите информацию карты через UIButton. Я хочу использовать эти NGUI для реализации интерфейса реальной игры. Я не знаю, глуп ли переход, потому что я впервые работаю над ним.
Буду признателен, если вы подскажете мне, как это сделать. что я намеревался, не отключая UIRoot SetActive
================================================================================
Я не знаюкак использовать GraphicRayCast из-за отсутствия навыков, но сначала я решил это с помощью этого метода.
if (UICamera.Raycast(Input.mousePosition) == true)
{
Debug.Log("UICamera.Raycast ture");
}
else
{
RaycastHit2D hit;
if (hit = Physics2D.GetRayIntersection(Camera.main.ScreenPointToRay(Input.mousePosition)))//, grid.unwalkableMask))
{
Node node = grid.NodeFromWorldPoint(hit.point);
Vector3Int pos = tilemaps[0].WorldToCell(node.worldPosition);// + tilemaps[0].tileAnchor);
node.enviormentTile = EnviormentTile.Gress;
tilemaps[0].SetTile(pos, tilePrefabs[0]);
}
}