这段后面这个OnFillVO的方法具体怎么在哪一层框架我也没看到,这个遮罩处理是借鉴
http://blog.csdn.net/andyhebear/article/details/50555288 这个哥们的方案中的。 PS感谢;
http://www.cppblog.com/shly/archive/2015/12/31/212582.html?utm_source=tuicool&utm_medium=referral
反正好多地址不知道原创是谁。 先感谢下,如果侵权或者谁写的,我再改下,或者标注下。
项目中需要添加新手引导的强制引导遮罩。
之前通过实现UnityEngine.ICanvasRaycastFilter这个接口
并且实现方法
public bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera)
{
//返回当前鼠标出发的区域是否在这个对应目标里面
return !RectTransformUtility.RectangleContainsScreenPoint(mTarget, sp, eventCamera);
}
这个脚本是挂在强制引导的整个页面上,这样只有target的RectTransfrom可以响应
//这个是在update中实现,能每次更换target对象的时候就会把指引位置转换了。
public void DoUpdate()
{
if (mTarget == null) { SetAllDirty(); return; }
if (mTarget != null && center != mTarget.anchoredPosition || size != mTarget.sizeDelta)
{
this.center = mTarget.anchoredPosition;
this.size = mTarget.sizeDelta;
//Arrow就是指引的手啊,或者光圈的位置
mArrow.position = mTarget.position;
SetAllDirty();
}
}
//这个也是
protected override void OnFillVBO(List<UIVertex> vbo)
{
Vector4 outer = new Vector4(-rectTransform.pivot.x * rectTransform.rect.width,
-rectTransform.pivot.y * rectTransform.rect.height,
(1 - rectTransform.pivot.x) * rectTransform.rect.width<