Unity不讓射線在UI開啟時響應(yīng)

最近slg項目中有個需求,場景中有地塊,給武將上陣,同時支持拖動,點擊等基本操作,同時又要打開UI替換武將,需要處理點擊穿透的問題

需求點:

1.點擊地塊,打開UI,但是不能點穿導(dǎo)致再次打開(其他辦法也行不在這討論);

2.打開UI,阻擋射線點擊,和第一點需求差不多

3.Canvas Group只能解決 讓射線響應(yīng) UI不被響應(yīng)的需求,而不是UI開啟時射線不響應(yīng)的需求



地塊最基本的box collider響應(yīng)ray

場景中點擊需要打開對應(yīng)UI,操作一系列上陣創(chuàng)模等功能,但是打開UI的同時,點擊到場景中這些碰撞盒,會持續(xù)響應(yīng),UI上BG image raycasttarget 并不能阻擋射線檢測,這時需要代碼中做一系列操作.

1.首先UI父物體上添加GraphicRaycaster組件,我這里mask只選了UI,其他不知道,沒測試過,

2.?聲明各種變量并找到

private GraphicRaycaster RaycastInCanvas;

private EventSystem eventSystem;

3.前任程序的做法是在Update中通過射線檢測及完成各種需求

主要做法是Input.GetMouseButtonDown(0) 點擊時在判斷,增加下列代碼

private bool CheckUiRaycastObjects()

? ? {

? ? ? ? PointerEventData eventData = new PointerEventData(eventSystem);

? ? ? ? eventData.pressPosition = Input.mousePosition;

? ? ? ? eventData.position = Input.mousePosition;

? ? ? ? List<RaycastResult> list = new List<RaycastResult>();

? ? ? ? RaycastInCanvas.Raycast(eventData, list);

? ? ? ? //Debug.Log(list.Count);

? ? ? ? return list.Count > 0;

? ? }

原理大概就是點擊的時候判斷下是否有UI層并返回響應(yīng)UI層raycasttarget的組件個數(shù),

這個數(shù)量是根據(jù)窗口 MaskBG蒙板上 raycasttarget 是否開啟來判斷

這里順便說一句,由于項目需求,我們這里非全屏UI一般都有層半透mask(全屏是BG),這個會開啟raycasttarget選項,簡單粗暴防點穿,其他的除了button 超鏈接文本 rawimag在模型展示的時候會開啟,其余都是關(guān)閉狀態(tài),否則有一定檢測消耗,具體可以看米忽悠大佬整理的,這里不討論

上面的代碼就很簡單 如果true 說明有UI層級擋住,ray射線相關(guān)操作失效,UI層正常,

false就說明沒UI阻擋. 暫時就說到這里



分割線


今天測試報了個bug,還是點穿了,是因為我們ui分了很多層

項目目前的ui層級

之前加了GraphicRaycaster 的在main層,但是pop層也有公用窗口,不可能這個公用窗口加上GraphicRaycaster ,所以上面的方法不行,被點穿,參考了這位兄弟的文章,解決了,具體的可以看他的文章解決,大概原理就是先判斷手指數(shù)量,需要注意pc和真機的區(qū)別

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末幽纷,一起剝皮案震驚了整個濱河市赠叼,隨后出現(xiàn)的幾起案子夷磕,更是在濱河造成了極大的恐慌,老刑警劉巖厨诸,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異废离,居然都是意外死亡撇寞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門眨八,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腺兴,“玉大人,你說我怎么就攤上這事廉侧『ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵伏穆,是天一觀的道長拘泞。 經(jīng)常有香客問我,道長枕扫,這世上最難降的妖魔是什么陪腌? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮烟瞧,結(jié)果婚禮上诗鸭,老公的妹妹穿的比我還像新娘。我一直安慰自己参滴,他們只是感情好强岸,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著砾赔,像睡著了一般蝌箍。 火紅的嫁衣襯著肌膚如雪青灼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天妓盲,我揣著相機與錄音杂拨,去河邊找鬼。 笑死悯衬,一個胖子當(dāng)著我的面吹牛弹沽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筋粗,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼策橘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了娜亿?” 一聲冷哼從身側(cè)響起役纹,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎暇唾,沒想到半個月后促脉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡策州,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年瘸味,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片够挂。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡旁仿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出孽糖,到底是詐尸還是另有隱情枯冈,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布办悟,位于F島的核電站尘奏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏病蛉。R本人自食惡果不足惜炫加,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铺然。 院中可真熱鬧俗孝,春花似錦、人聲如沸魄健。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沽瘦。三九已至革骨,卻和暖如春农尖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背苛蒲。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工卤橄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绿满,地道東北人臂外。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像喇颁,于是被迫代替她去往敵國和親漏健。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

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