可参考这里UGUI 新手引导遮罩控件
解释一下思路:
public bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera)
{
// 点击在箭头框内部则无效,否则生效
return !RectTransformUtility.RectangleContainsScreenPoint(arrow, sp, eventCamera);
}
上面的代码是用来判断射线是否能穿透的,只有点击在透明的小框里射线才会穿透
然后在protected override void OnFillVBO(List<UIVertex> vbo)
中绘制遮罩。我们知道,计算机绘制图形其实是绘制三角形,这里面小框的上下左右共四个正方形,需要绘制8个三角形。绘制的过程如代码所示,每3个点决定一个三角形,但是三角形会共用定点,故依次加入决定三角形的顶点,然后计算机会绘制出这几个三角形。