Unity Recast射線優(yōu)化

團(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,242評(píng)論 25 708
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,229評(píng)論 4 61
  • This article is a record of my journey to learn Game Deve...
    蔡子聰閱讀 3,875評(píng)論 0 9
  • 總結(jié)一些interface聲明時(shí)的規(guī)范,相關(guān)宏的介紹,定義方法時(shí)有用的修飾符,編寫(xiě)注釋的規(guī)范,最終寫(xiě)出一個(gè)合格的頭...
    黑超熊貓zuik閱讀 7,195評(píng)論 7 59
  • 很多人支教,可能是因?yàn)楹闷妫赡苁且驗(yàn)閷W(xué)分,也可能就是因?yàn)橹Ы獭J聦?shí)上,支教完了才發(fā)現(xiàn),支教他人,也支教了自己。自...
    三十年河?xùn)|閱讀 729評(píng)論 0 7