网站外链内链怎么做短视频公司网站建设方案
news/
2025/9/23 7:58:51/
文章来源:
网站外链内链怎么做,短视频公司网站建设方案,wordpress评论插件,ae成品免费下载网站在新手引导每一步中实现可以遮掉其他部分而显示当前需要点击的部分#xff0c;只需要在每一步引导的时候设置对应的镂空区域的RectTransform.效果如下图#xff1a; 代码#xff1a;
public class SelfMaskSet : MaskableGraphic, ICanvasRaycastFilter
{[SerializeField]p…在新手引导每一步中实现可以遮掉其他部分而显示当前需要点击的部分只需要在每一步引导的时候设置对应的镂空区域的RectTransform.效果如下图 代码
public class SelfMaskSet : MaskableGraphic, ICanvasRaycastFilter
{[SerializeField]public RectTransform _target;private Vector3 _targetMin Vector3.zero;private Vector3 _targetMax Vector3.zero;private bool _canRefresh true;private Transform _cacheTrans null;/// summary/// 设置镂空的目标/// /summarypublic void SetTarget(RectTransform target){_canRefresh true;_target target;_RefreshView();}private void _SetTarget(Vector3 tarMin, Vector3 tarMax){if (tarMin _targetMin tarMax _targetMax)return;_targetMin tarMin;_targetMax tarMax;SetAllDirty();}private void _RefreshView(){if (!_canRefresh) return;_canRefresh false;if (null _target){_SetTarget(Vector3.zero, Vector3.zero);SetAllDirty();}else{Bounds bounds RectTransformUtility.CalculateRelativeRectTransformBounds(_cacheTrans, _target);_SetTarget(bounds.min, bounds.max);}}protected override void OnPopulateMesh(VertexHelper vh){if (_targetMin Vector3.zero _targetMax Vector3.zero){base.OnPopulateMesh(vh);return;}vh.Clear();// 填充顶点UIVertex vert UIVertex.simpleVert;vert.color color;Vector2 selfPiovt rectTransform.pivot;Rect selfRect rectTransform.rect;float outerLx -selfPiovt.x * selfRect.width;float outerBy -selfPiovt.y * selfRect.height;float outerRx (1 - selfPiovt.x) * selfRect.width;float outerTy (1 - selfPiovt.y) * selfRect.height;// 0 - Outer:LTvert.position new Vector3(outerLx, outerTy);vh.AddVert(vert);// 1 - Outer:RTvert.position new Vector3(outerRx, outerTy);vh.AddVert(vert);// 2 - Outer:RBvert.position new Vector3(outerRx, outerBy);vh.AddVert(vert);// 3 - Outer:LBvert.position new Vector3(outerLx, outerBy);vh.AddVert(vert);// 4 - Inner:LTvert.position new Vector3(_targetMin.x-10, _targetMax.y 10);vh.AddVert(vert);// 5 - Inner:RTvert.position new Vector3(_targetMax.x 10, _targetMax.y 10);vh.AddVert(vert);// 6 - Inner:RBvert.position new Vector3(_targetMax.x 10, _targetMin.y -10);vh.AddVert(vert);// 7 - Inner:LBvert.position new Vector3(_targetMin.x -10, _targetMin.y-10);vh.AddVert(vert);// 设定三角形vh.AddTriangle(4, 0, 1);vh.AddTriangle(4, 1, 5);vh.AddTriangle(5, 1, 2);vh.AddTriangle(5, 2, 6);vh.AddTriangle(6, 2, 3);vh.AddTriangle(6, 3, 7);vh.AddTriangle(7, 3, 0);vh.AddTriangle(7, 0, 4);}bool ICanvasRaycastFilter.IsRaycastLocationValid(Vector2 screenPos, Camera eventCamera){if (null _target) return true;// 将目标对象范围内的事件镂空使其穿过return !RectTransformUtility.RectangleContainsScreenPoint(_target, screenPos, eventCamera);}protected override void Awake(){base.Awake();_cacheTrans GetComponentRectTransform();}void Update(){_canRefresh true;_RefreshView();}public void OnButtonClick() {Debug.Log(测试镂空区域);}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911839.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!