團(tuán)隊(duì)多人在開(kāi)發(fā)游戲界面,很多時(shí)候都是復(fù)制黏貼,比如上一個(gè)圖片是需要響應(yīng)RaycastTarget,然后ctrl+d以后復(fù)制出來(lái)的也就帶了這個(gè)屬性,很可能新復(fù)制出來(lái)的圖片是不需要響應(yīng)的,開(kāi)發(fā)人員又沒(méi)有取消勾選掉,這就出問(wèn)題了。
所以RaycastTarget如果被勾選的過(guò)多的話, 效率必然會(huì)低。。這個(gè)問(wèn)題其實(shí)困擾了我很久,我終于想了一個(gè)還算好的方法解決它。
把下面代碼掛在游戲中的任意GameObject上,原理其實(shí)很簡(jiǎn)單就是繪制輔助線,當(dāng)UI中RaycastTarget發(fā)生變化,SceneView中的藍(lán)色輔助線也會(huì)刷新,還是挺方便的。
#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<MaskableGraphic>())
{
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