Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
private bool IsAlphaPoint(PointerEventData eventData)
{
Vector2 localCursor;
RectTransformUtility.ScreenPointToLocalPointInRectangle(GetComponent<RectTransform>(), eventData.position, eventData.pressEventCamera, out localCursor);
Rect r = RectTransformUtility.PixelAdjustRect(GetComponent<RectTransform>(), GetComponent<Canvas>());
Vector2 ll = new Vector2(localCursor.x - r.x, localCursor.y - r.y);
//Найдем пиксель где начинается спрайт нужной страны в атласе - локальный (0,0)
Vector2 pixelStart=new Vector2(CountryImg.sprite.texture.width*CountryImg.sprite.uv[2].x,
CountryImg.sprite.texture.height*CountryImg.sprite.uv[2].y);
int x = (int)(ll.x / r.height * CountryImg.sprite.textureRect.height );
int y = (int)(ll.y / r.height * CountryImg.sprite.textureRect.height);
//вычесляем координаты относительно атласа
pixelStart+=new Vector2(x,y);
print("itog:" + pixelStart.x + " " + pixelStart.y);
return IsAlphaPoint((int)pixelStart.x, (int)pixelStart.y);
}
x == 0 && y == 0 && blockWidth == dataWidth && blockHeight == dataHeight
UnityEngine.Texture2D:GetPixel(Int32, Int32)
то автоматический батчинг работать не будет
Как используя Canvas собрать кликабельную карту мира на Unity3d