UGUI之有效解决RaycastTarget勾选过多的烦恼

您所在的位置:网站首页 鱼儿哭的图片 UGUI之有效解决RaycastTarget勾选过多的烦恼

UGUI之有效解决RaycastTarget勾选过多的烦恼

2023-08-24 20:04| 来源: 网络整理| 查看: 265

看过UGUI源码的朋友一定都知道,UI事件会在EventSystem在Update的Process触发。UGUI会遍历屏幕中所有RaycastTarget是true的UI,接着就会发射线,并且排序找到玩家最先触发的那个UI,在抛出事件给逻辑层去响应。

团队多人在开发游戏界面,很多时候都是复制黏贴,比如上一个图片是需要响应RaycastTarget,然后ctrl+d以后复制出来的也就带了这个属性,很可能新复制出来的图片是不需要响应的,开发人员又没有取消勾选掉,这就出问题了。

所以RaycastTarget如果被勾选的过多的话, 效率必然会低。。这个问题其实困扰了我很久,我终于想了一个还算好的方法解决它。

把下面代码挂在游戏中的任意GameObject上,原理其实很简单就是绘制辅助线,当UI中RaycastTarget发生变化,SceneView中的蓝色辅助线也会刷新,还是挺方便的。

#if UNITY_EDITOR using UnityEngine; using System.Collections; using UnityEngine.UI; public class DebugUILine : MonoBehaviour { static Vector3[] fourCorners = new Vector3[4]; void OnDrawGizmos() { foreach (MaskableGraphic g in GameObject.FindObjectsOfType()) { if (g.raycastTarget) { RectTransform rectTransform = g.transform as RectTransform; rectTransform.GetWorldCorners(fourCorners); Gizmos.color = Color.blue; for (int i = 0; i < 4; i++) Gizmos.DrawLine(fourCorners[i], fourCorners[(i + 1) % 4]); } } } } #endif

如图 在这里插入图片描述 Canvas的参数 在这里插入图片描述 UICamera相机的参数 在这里插入图片描述 这个脚本无论是运行模式,还是编辑模式都可以看到蓝色的辅助线,的理论上90%的文字或者 非按钮的图片 都是不需要RaycastTarget的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3