Unity開發——CanvasGroup組件介紹和應用

CanvasGroup是Unity中用于控制UI的透明度、交互性和渲染順序的組件。

一、常用屬性的解釋

1、alpha控制UI的透明度

類型:float,0.0 ~1.0,

其中 0.0 完全透明,1.0 完全不透明。

通過調整alpha值可以實現UI的淡入淡出效果,可以參考本人的另一篇文章:

Unity功能——設置提示面板的顯示與掩藏

2、blocksRaycasts:控制UI是否阻擋射線(Raycasts)

(1)類型:bool,true/false,

(2)true時會阻擋射線,false時不會阻擋射線。

(3)用戶不對該UI后面的UI進行射線檢測,可將值設置為true;

3、interactable:控制UI是否可交互(如點擊、拖動等)

(1)類型:bool,true/false,

(2)true時會響應用戶輸入,false時將忽略用戶輸入。

(3)用戶不對該UI進行交互,可將值設置為false;

4、ignoreParentGroups:控制UI是否忽略父級CanvasGroup的設置

(1)類型:bool,true/false,

(2)true時將忽略其父級CanvasGroup的alpha和interactable設置,false時會受到父級CanvasGroup的設置影響。

(3)用戶要獨立控制UI的透明度和交互性,可將值設置為true;

二、組件的alpha屬性和UI的alpha屬性的異同

1、相同點:

在視覺上是一樣的,都可控制UI能不能被用戶看到,也僅是控制物體的不透明度;

在交互上,都不會影響UI的交互性,都可正常進行交互事件;

在射線檢測上,也都不會改變UI對射線的阻擋特性;

2、不同點:
(1)作用范圍不同

直接設置 UI 元素的alpha值,只會影響該單個UI元素的透明度,其父子元素不會受到影響。

而CanvasGroup組件可以控制其所在UI及其所有子對象的透明度。組件所在的UI對象以及它包含的所有子物體(如按鈕、文本框等)都會統一改變透明度。

(2)性能影響不同

直接設置單個UI的alpha值,性能開銷相對較小,因為只涉及到對單個對象的屬性修改。

當使用CanvasGroup時,會影響多個子對象,Unity需要處理更多的渲染和交互狀態更新,

性能開銷相對較大,尤其是在子對象數量較多的情況下。不過,在大多數正常場景下,這種開銷通常是可以接受的。

三、組件的alpha屬性和UI的visible屬性的異同

1、相同點:

在視覺上是一樣的,都可控制UI能不能被用戶看到;

2、不同點:
(1)直接設置UI的visible值為false后,UI將完全不響應任何事件;

因為visible為false,背包及其內部子物體都不會被渲染出來,更不會被交互;

(2)而通過設置CanvasGroup組件的alpha值,只是影響視覺效果,不影響事件交互。

即使aplha值為0,對UI及其子物體的拖拽移動,修改等任何事件都會正常執行?

四、(重點)blocksRaycasts和interactable之間的區別和使用場景

下面提到的自身,包括掛載組件的UI以及UI內部的其他子對象。

1、異同

相同:都會影響UI自身的交互;

不同:

Interactable是影響(自身的)輸入事件,影響交互狀態;

BlocksRaycasts是影響(自身和自身以外后面的UI的)射線事件,影響射線檢測狀態。

2、使用環境

以背包面板為例,

(1)狀態說明如下:

1)僅背包上掛載CanvasGroup組件;

2)可通過鍵盤輸入事件,往背包內部物品格里增減物品

3)背包物品格里的物品背包后面的物品X都能進行鼠標點擊移動操作時,

4)點擊重疊,通常會優先處理最上層的元素:物品>物品格>背包>物品X

4)由于背包的visible值為false,完全不響應任何事件,

而CanvasGroup組件的alpha值只影響視覺效果,不影響任何用戶事件。

若visible為false,無論CanvasGroup設置什么樣,物體X怎么也不會被背包遮擋,能被射線檢測到,可被鼠標拖動。

故這里默認背包的visible值為true,通過CanvasGroup的alpha值控制背包顯示掩藏

(2)情況分析:
1)Interactable為true,BlocksRaycasts為true:

Interactable為true,

表示背包及子物體的交互事件可正常執行,鼠標鍵盤事件背包及子物體都可被接收。

blocksRaycasts為true:

在檢測鼠標點擊時,射線會首先命中背包面板,鼠標點擊事件會優先被背包面板接收并處理,而不會觸發后面物體 X 的點擊拖動事件。

無論alpha值是不是為0,背包面板是不是不可見,都會認為背包面板仍然存在并會阻擋射線,交互邏輯上優先響應背包面板

故鼠標點擊背包/物品X:

背包面板可被鼠標拖動;背包里的物品也可以正常被鼠標移動;

也可正常通過鍵盤事件,往內部物品格里進行增減物品;

物體X被背包遮擋,不會被射線檢測到,無法被鼠標拖動;

2)Interactable為true,BlocksRaycasts為false:

interactable為true,

表明背包及其子元素,理論上可以接受交互事件;

但blocksRaycasts為false,

背包面板不會阻擋射線檢測,射線會直接穿透背包面板,命中其后面的物體X。

無論alpha值是不是為1,背包面板是不是可見,交互邏輯上只響應物體X的射線檢測事件,

不過鍵盤的事件不是由射線檢測判斷觸發,背包里的物品正常接收鍵盤事件;

故鼠標點擊背包/物品X:

背包面板不能被鼠標拖動;背包里的物品無法被鼠標移動;

但可正常通過鍵盤事件,往內部物品格里進行增減物品;

物體X不會被背包遮擋,可以被射線檢測到,被鼠標拖動;

3)Interactable為false,BlocksRaycasts為true:

blocksRaycasts為true

在檢測鼠標點擊時,射線會首先命中背包面板,鼠標點擊事件會優先被背包面板接收并處理,而不會觸發后面物體 X 的點擊拖動事件。

但Interactable為false

背包及其子元素的交互層面被設置為不可用狀態,背包上的任何交互事件都不會被接受觸發。

因此背包子物體的鍵盤事件不會被觸發;同時即使背包及其子物體接收了鼠標的射線檢測,也不會觸發鼠標事件。

故鼠標點擊背包/物品X:

背包面板不能被鼠標拖動;背包里的物品無法被鼠標移動;

通過鍵盤事件,也不能往內部物品格里進行增減物品;

物體X會被背包遮擋,不會被射線檢測到,無法被鼠標拖動;

4)Interactable為false,BlocksRaycasts為false:

blocksRaycasts為false

背包面板不會阻擋射線檢測,射線會直接穿透背包面板,命中其后面的物體X。交互邏輯上只響應物體X的射線檢測事件。

Interactable為false

背包及其子元素的交互層面被設置為不可用狀態,背包上的任何交互事件都不會被接受觸發。

因此背包和子物體的鼠標事件,以及子物體的鍵盤事件都不會被觸發。

故鼠標點擊背包/物品X:

背包面板不能被鼠標拖動;背包里的物品無法被鼠標移動;

通過鍵盤事件,也不能往內部物品格里進行增減物品;

物體X不會被背包遮擋,可以被射線檢測到,被鼠標拖動;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/71859.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/71859.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/71859.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

每天五分鐘深度學習PyTorch:向更深的卷積神經網絡挑戰的ResNet

本文重點 ResNet大名鼎鼎,它是由何愷明團隊設計的,它獲取了2015年ImageNet冠軍,它很好的解決了當神經網絡層數過多出現的難以訓練的問題,它創造性的設計了跳躍連接的方式,使得卷積神經網絡的層數出現了大幅度提升,設置可以達到上千層,可以說resnet對于網絡模型的設計具…

大模型巔峰對決:DeepSeek vs GPT-4/Claude/PaLM-2 全面對比與核心差異揭秘

文章目錄 一、架構設計深度解剖1.1 核心架構對比圖譜1.2 動態MoE架構實現架構差異分析表 二、訓練策略全面對比2.1 訓練數據工程對比2.2 分布式訓練代碼對比DeepSeek混合并行實現GPT-4 Megatron實現對比 2.3 關鍵訓練參數對比 三、性能表現多維評測3.1 基準測試全景對比3.2 推理…

基于hive的電信離線用戶的行為分析系統

標題:基于hive的電信離線用戶的行為分析系統 內容:1.摘要 隨著電信行業的快速發展,用戶行為數據呈現出海量、復雜的特點。為了深入了解用戶行為模式,提升電信服務質量和精準營銷能力,本研究旨在構建基于 Hive 的電信離線用戶行為分析系統。通…

Python使用alembic實現數據庫管理

python使用alembic實現數據庫管理 環境準備 安裝依賴: pip install sqlalchemy alembic項目結構 my_project/ ├── models.py # 定義數據模型 └── alembic/ # 遷移腳本目錄(自動生成) 使用步驟: 1. 初始化Alembic環境 …

對WebSocket做一點簡單的理解

1.概念 WebSocket 是基于 TCP 的一種新的網絡協議。它實現了瀏覽器與服務器全雙工通信——瀏覽器和服務器只需要完成一次握手,兩者之間就可以創建持久性的連接, 并進行雙向數據傳輸。 HTTP協議和WebSocket協議對比: HTTP是短連接 WebSocke…

kali虛擬機登錄頁面發癲 大寫鎖定輸入不了密碼

不知道怎么了 總是發癲 重啟切換太麻煩了 還有時候不成功 kali其實可以開啟虛擬鍵盤 如下 就解決的 發癲kali 發癲 發癲

基于Python的商品銷量的數據分析及推薦系統

一、研究背景及意義 1.1 研究背景 隨著電子商務的快速發展,商品銷售數據呈現爆炸式增長。這些數據中蘊含著消費者行為、市場趨勢、商品關聯等有價值的信息。然而,傳統的數據分析方法難以處理海量、多源的銷售數據,無法滿足現代電商的需求。…

內存泄漏出現的時機和原因,如何避免?

由于時間比較緊張我就不排版了,但是對于每一種可能的情況都會出對應的代碼示例以及解決方案代碼示例。 內存泄漏可能的原因之一在于用戶在動態分配一個內存空間之中,忘記將這部分內容手動釋放。例如:(c之中使用new分配內存沒有使…

PDF處理控件Aspose.PDF,如何實現企業級PDF處理

PDF處理為何成為開發者的“隱形雷區”? “手動調整200頁PDF目錄耗時3天,掃描件文字識別錯誤導致數據混亂,跨平臺渲染格式崩壞引發客戶投訴……” 作為開發者,你是否也在為PDF處理的復雜細節消耗大量精力?Aspose.PDF憑…

工程化與框架系列(27)--前端音視頻處理

前端音視頻處理 🎥 引言 前端音視頻處理是現代Web應用中的重要組成部分,涉及音頻播放、視頻處理、流媒體傳輸等多個方面。本文將深入探討前端音視頻處理的關鍵技術和最佳實踐,幫助開發者構建高質量的多媒體應用。 音視頻技術概述 前端音視…

2008-2024年中國手機基站數據/中國移動通信基站數據

2008-2024年中國手機基站數據/中國移動通信基站數據 1、時間:2008-2024年 2、來源:OpenCelliD 3、指標:網絡類型、網絡代數、移動國家/地區、移動網絡代碼、區域代碼、小區標識、單元標識、坐標經度、坐標緯度、覆蓋范圍、測量樣本數、坐標…

阿里云 ESA 游戲行業解決方案|安全防護、加速、低延時的技術融合

如今,游戲行業正處于蓬勃發展與深刻變革的關鍵時期。根據中國國際數字娛樂產業大會(CDEC)發布的《2024年 1-6 月中國游戲產業報告》顯示 2024 年上半年國內游戲市場實際銷售收入達 1472.67 億元,同比增長 2.08%,游戲用…

C# Unity 唐老獅 No.7 模擬面試題

本文章不作任何商業用途 僅作學習與交流 安利唐老獅與其他老師合作的網站,內有大量免費資源和優質付費資源,我入門就是看唐老師的課程 打好堅實的基礎非常非常重要: 全部 - 游習堂 - 唐老獅創立的游戲開發在線學習平臺 - Powered By EduSoho 如果你發現了文章內特殊的字體格式,…

electron + vue3 + vite 主進程到渲染進程的單向通信

用示例講解下主進程到渲染進程的單向通信 初始版本項目結構可參考項目:https://github.com/ylpxzx/electron-forge-project/tree/init_project 主進程到渲染進程(單向) 以Electron官方文檔給出的”主進程主動觸發動作,發送內容給渲…

【雜談】-因果性:開啟機器學習新紀元?

文章目錄 因果性:開啟機器學習新紀元?一、機器學習的現狀與局限二、因果性的定義與意義(一)日常生活中的因果性案例(二)相關性與因果性的區別 三、現有機器學習模型的困境與因果性的價值(一&…

【Python】omegaconf 用法詳解

OmegaConf:從基礎到進階 1. OmegaConf 簡介 OmegaConf 是 hydra 背后的核心配置庫,提供比 argparse 和 json.load 更靈活的配置管理能力。其主要特性包括: 安裝 OmegaConf: pip install omegaconf2. 基本操作 2.1 創建 OmegaC…

如何在 Windows 10 啟用卓越性能模式及不同電源計劃對比

在使用 powercfg -duplicatescheme 命令啟用 “卓越性能模式”(即 Ultimate Performance 模式)之前,有幾個前提條件需要注意: 前提條件: 系統版本要求:卓越性能模式 僅在 Windows 10 專業版 或更高版本&a…

請談談 HTTP 中的安全策略,如何防范常見的Web攻擊(如XSS、CSRF)?

一、Web安全核心防御機制 (一)XSS攻擊防御(跨站腳本攻擊) 1. 原理與分類 ?存儲型XSS:惡意腳本被持久化存儲在服務端(如數據庫)?反射型XSS:腳本通過URL參數或表單提交觸發執行?…

三、0-1搭建springboot+vue3前后端分離-idea新建springboot項目

一、ideal新建項目1 ideal新建項目2 至此父項目就創建好了,下面創建多模塊: 填好之后點擊create 不刪了,直接改包名,看自己喜歡 修改包名和啟動類名: 打開ServiceApplication啟動類,修改如下: …

從0到1入門RabbitMQ

一、同步調用 優勢:時效性強,等待到結果后才返回 缺點: 拓展性差性能下降級聯失敗問題 二、異步調用 優勢: 耦合度低,拓展性強異步調用,無需等待,性能好故障隔離,下游服務故障不影響…