Unity XR-XR Interaction Toolkit開發使用方法(十一)組件介紹(XR Interactable)

目錄

一、插件介紹

二、主要組件

XR Interaction Manager

XR Controller

XR Interactor

XR Direct Interactor

XR Ray Interactor

XR Socket Interactor

XR?Gaze?Interactor

XR Interaction Group

三、XR Interactable

1、組件介紹

2、核心功能與特點

交互類型支持

事件驅動設計

物理與運動控制

可擴展性

3、組件配置詳解

1. 基礎配置

Interaction Manager

Interaction Layer Mask

Colliders

2. 交互行為配置

Interactable Events

Filters

3. 高級配置

Allow Multiple Selection

Custom Reticle

4、事件系統與腳本交互

1. 通過 Unity Event 綁定

2. 通過腳本監聽事件

5、與其他組件的協作

與 XR Interactor 的交互

與 XR Interaction Manager 的協同

與物理系統的集成

6、實際應用場景

場景1:基礎抓取與釋放

場景2:懸停高亮與提示

場景3:條件過濾交互

7、子類與擴展

XR Grab Interactable

XR Simple Interactable

8、優化與調試技巧

性能優化

調試工具

輸入防抖

9、常見問題與解決

問題:物體無法被交互

問題:抓取后物體位置偏移

問題:事件未觸發


一、插件介紹

Unity XR-XR Interaction Toolkit開發使用方法(一)-CSDN博客

Unity XR-XR Interaction Toolkit開發使用方法(二)Hisense XR-V3 Pro SDK接入-CSDN博客


二、主要組件

XR Interaction Manager

Unity XR-XR Interaction Toolkit開發使用方法(三)組件介紹(XR Interaction Manager)-CSDN博客

XR Controller

Unity XR-XR Interaction Toolkit開發使用方法(四)組件介紹(XR Controller)-CSDN博客

XR Interactor

Unity XR-XR Interaction Toolkit開發使用方法(五)組件介紹(XR Interactor)-CSDN博客

XR Direct Interactor

Unity XR-XR Interaction Toolkit開發使用方法(六)組件配置(XR Direct Interactor)-CSDN博客

XR Ray Interactor

Unity XR-XR Interaction Toolkit開發使用方法(七)組件配置(XR Ray Interactor)-CSDN博客

XR Socket Interactor

Unity XR-XR Interaction Toolkit開發使用方法(八)組件介紹(XR Socket Interactor)-CSDN博客

XR?Gaze?Interactor

Unity XR-XR Interaction Toolkit開發使用方法(九)組件介紹(XR Gaze Interactor)-CSDN博客

XR Interaction Group

Unity XR-XR Interaction Toolkit開發使用方法(十)組件介紹(XR Interaction Group)-CSDN博客


三、XR Interactable

1、組件介紹

Unity?XR Interactable?是?XR Interaction Toolkit?中用于標記物體為?可交互對象?的核心組件,定義了物體如何響應交互器(如手柄、射線、視線)的操作(如抓取、懸停、激活)。它是所有交互行為的“接收方”,為開發者提供了靈活的事件系統和屬性配置,是構建 XR 交互邏輯的基礎。


2、核心功能與特點

交互類型支持

  1. 支持多種交互行為:懸停(Hover)選中(Select)激活(Activate)焦點(Focus)?等。
  2. 可配置交互的觸發條件(如僅允許特定類型的交互器操作)。

事件驅動設計

  1. 提供豐富的回調事件(如?OnHoverEnteredOnSelectExited),便于監聽和響應交互狀態變化。
  2. 支持通過 Unity Event 或腳本綁定自定義邏輯。

物理與運動控制

  1. 與 Unity 物理引擎深度集成,支持基于物理的抓取、投擲、碰撞反饋。
  2. 可配置物體的運動模式(如運動學抓取或物理模擬)。

可擴展性

  1. 作為基類,派生出多種專用交互組件(如?XR Grab InteractableXR Simple Interactable)。
  2. 允許通過繼承和重寫方法實現自定義交互邏輯。

3、組件配置詳解

在 Inspector 面板中,XR Interactable 的關鍵屬性如下:

1. 基礎配置

Interaction Manager
  • 綁定的交互管理器(默認為場景中的?XR Interaction Manager)。
Interaction Layer Mask
  • 指定可與此物體交互的層級,過濾無關的交互器。
Colliders
  • 手動指定用于檢測交互的碰撞體列表(默認自動獲取物體及其子物體的所有碰撞體)。

2. 交互行為配置

Interactable Events
  • OnFirstHoverEntered:首次懸停時觸發。
  • OnLastHoverExited:最后一個懸停離開時觸發。
  • OnSelectEntered?/?OnSelectExited:選中開始/結束。
  • OnActivate?/?OnDeactivate:激活/取消激活(如按下扳機鍵)。
Filters
  • Hover Filters?/?Select Filters:通過腳本接口(IXRHoverFilterIXRSelectFilter)過濾交互器。
  • 示例:僅允許帶有特定標簽的交互器懸停或選中物體。

3. 高級配置

Allow Multiple Selection
  • 是否允許多個交互器同時選中該物體(如雙手抓取)。
Custom Reticle
  • 自定義懸停或選中時顯示的光標預制體(如高亮圖標)。

4、事件系統與腳本交互

XR Interactable 提供的事件可通過?Inspector 面板直接綁定?或?腳本動態監聽。以下是典型用法:

1. 通過 Unity Event 綁定

  • 在 Inspector 面板中,將事件(如?OnSelectEntered)拖拽到目標腳本方法。
    示例:抓取物體時播放音效。

2. 通過腳本監聽事件

using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit;public class InteractableDemo : MonoBehaviour
{private XRBaseInteractable interactable;void Start(){interactable = GetComponent<XRBaseInteractable>();interactable.onSelectEntered.AddListener(OnGrabbed);interactable.onHoverEntered.AddListener(OnHoverStart);}private void OnGrabbed(XRBaseInteractor interactor){Debug.Log($"{interactor.name} 抓取了 {interactable.name}");}private void OnHoverStart(XRBaseInteractor interactor){GetComponent<Renderer>().material.color = Color.red;}
}

5、與其他組件的協作

與 XR Interactor 的交互

XR Interactor(如?XR Direct Interactor)檢測到?XR Interactable?后,觸發其事件。

  • 例如:當手柄靠近物體時,XR Interactable?的?OnHoverEntered?事件被觸發。

與 XR Interaction Manager 的協同

XR Interaction Manager?管理所有交互器和可交互對象的注冊與事件分發。

  • 例如:當一個交互器選中物體時,管理器確保沖突的正確處理。

與物理系統的集成

若物體需要物理反饋(如投擲),需附加?Rigidbody?組件,并配置?XR Grab Interactable?的運動模式:

  • Kinematic:直接控制物體位置(無物理模擬)。
  • Velocity Tracking:通過力或速度驅動物體(模擬物理抓取)。

6、實際應用場景

場景1:基礎抓取與釋放

  1. 為物體添加?XR Grab Interactable(繼承自?XR Interactable)。
  2. 配置?OnSelectEntered?事件:抓取時縮小物體。
  3. 配置?OnSelectExited?事件:釋放時恢復原大小并施加投擲力。

場景2:懸停高亮與提示

  1. 監聽?OnHoverEntered?事件:懸停時顯示發光材質。
  2. 監聽?OnHoverExited?事件:隱藏發光效果。

場景3:條件過濾交互

  1. 創建自定義?IXRSelectFilter?腳本:僅允許帶有 "Key" 標簽的交互器抓取物體。
  2. 將過濾器添加到?XR Interactable?的?Select Filters?列表。

7、子類與擴展

XR Interactable 作為基類,派生出多種專用交互組件:

XR Grab Interactable

  1. 擴展抓取功能,支持?運動學抓取?或?物理抓取
  2. 可配置抓取附著力、投擲速度比例。

XR Simple Interactable

  1. 輕量級交互,僅響應懸停和基礎選中事件(無物理抓取)。
  2. 適用于按鈕、開關等簡單交互。

8、優化與調試技巧

性能優化

  1. 減少?XR Interactable?對象的碰撞體復雜度(使用簡單形狀碰撞體)。
  2. 通過?Interaction Layer Mask?過濾不必要的交互檢測。

調試工具

  1. 啟用?XR Interactable?的調試模式(Gizmos),可視化交互范圍。
  2. 使用?Debug.Log?輸出交互事件參數:
interactable.onSelectEntered.AddListener((interactor) => Debug.Log($"選中者:{interactor.name}, 物體:{interactable.name}"));

輸入防抖

  1. 為懸停事件添加延遲觸發(通過腳本控制),避免快速移動時的誤觸。

9、常見問題與解決

問題:物體無法被交互

檢查步驟

  1. 確認物體附加了?XR Interactable?或其子類組件。
  2. 檢查?Interaction Layer Mask?是否允許當前交互器的層級。
  3. 驗證碰撞體是否正確設置(非Trigger類型)。

問題:抓取后物體位置偏移

解決

  1. 調整?XR Grab Interactable?的?Attach Transform?位置。
  2. 檢查物體的?Rigidbody?是否被其他力干擾。

問題:事件未觸發

排查方向

  1. 確保事件回調方法為?public?或在腳本中動態注冊。
  2. 檢查交互器與可交互對象的?Interaction Manager?是否一致。

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

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

相關文章

Spring Boot spring-boot-maven-plugin 參數配置詳解

一 spring-boot-maven-plugin 插件的5個Goals spring-boot:repackage&#xff0c;默認goal。在mvn package之后&#xff0c;再次打包可執行的jar/war&#xff0c;同時保留mvn package生成的jar/war為.origin&#xff1b;重新打包存在的jar或者war包從而使他們可以在命令行使用…

eMMC安全簡介

1. 引言 術語“信息安全”涵蓋多種不同的設計特性。一般而言&#xff0c; 信息安全是指通過實踐防止信息遭受未經授權的訪問、使用、披露、中斷、篡改、檢查、記錄或銷毀。 信息安全的三大核心目標為 機密性&#xff08;Confidentiality&#xff09;、完整性&#xff08;Integr…

Python 數據結構 2.時間復雜度和空間復雜度

Life is a journey —— 25.2.28 一、引例&#xff1a;窮舉法 1.單層循環 所謂窮舉法&#xff0c;就是我們通常所說的枚舉&#xff0c;就是把所有情況都遍歷了的意思。 例&#xff1a;給定n&#xff08;n ≤ 1000&#xff09;個元素ai&#xff0c;求其中奇數有多少個 判斷一…

FFmpeg-chapter3-讀取視頻流(原理篇)

ffmpeg網站&#xff1a;About FFmpeg 1 庫介紹 &#xff08;1&#xff09;libavutil是一個包含簡化編程函數的庫&#xff0c;包括隨機數生成器、數據結構、數學例程、核心多媒體實用程序等等。 &#xff08;2&#xff09;libavcodec是一個包含音頻/視頻編解碼器的解碼器和編…

面試(進階) —虛擬列表在什么場景使用,如何實現?

面試(進階) —虛擬列表在什么場景使用&#xff0c;如何實現&#xff1f; 在前端開發中&#xff0c;當需要渲染大量數據時&#xff0c;傳統的渲染方式往往會遇到性能瓶頸。一次性將大量數據渲染到DOM中&#xff0c;不僅會導致頁面加載緩慢&#xff0c;還可能占用大量內存&#x…

Linux Mem -- 關于AArch64 MTE功能的疑問

目錄 1.虛擬地址和物理地址映射完成后&#xff0c;才可以設置虛擬地址對應的memory tag &#xff1f; 2.各種memory allocator中的address tag從哪來&#xff0c;怎么產生&#xff1f; 2.1 vmalloc allocator 2.2 slub分配器 2.3 用戶可以指定IRG指令產生的address tag 3.kasan…

python-leetcode-顏色分類

75. 顏色分類 - 力扣&#xff08;LeetCode&#xff09; class Solution:def sortColors(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""low, mid, high 0, 0, len(nums) - 1while mid < h…

ArcGIS Pro技巧實戰:高效矢量化天地圖地表覆蓋圖

在地理信息系統&#xff08;GIS&#xff09;領域&#xff0c;地表覆蓋圖的矢量化是一項至關重要的任務。天地圖作為中國國家級的地理信息服務平臺&#xff0c;提供了豐富且詳盡的地表覆蓋數據。然而&#xff0c;這些數據通常以柵格格式存在&#xff0c;不利于進行空間分析和數據…

【江科大STM32】TIM輸出比較(學習筆記)

本章圖片文字內容也為重要知識&#xff0c;請馬住&#xff01; 輸出比較簡介 OC&#xff08;Output Compare&#xff09;輸出比較輸出比較可以通過比較CNT與CCR寄存器值的關系&#xff0c;來對輸出電平進行置1、置0或翻轉的操作&#xff0c;用于輸出一定頻率和占空比的PWM波形…

【網絡安全 | 漏洞挖掘】利用文件上傳功能的 IDOR 和 XSS 劫持會話

未經許可,不得轉載。 本文涉及漏洞均已修復。 文章目錄 前言正文前言 想象這樣一個場景:一個專門處理敏感文檔的平臺,如保險理賠或身份驗證系統,卻因一個設計疏漏而成為攻擊者的“金礦”。在對某個保險門戶的文件上傳功能進行測試時,我意外發現了一個可導致大規模賬戶接管…

飛算 JavaAI 如何讓微服務開發快人一步?

在當今競爭激烈的軟件開發領域&#xff0c;微服務架構因其靈活性和可擴展性備受青睞。然而&#xff0c;微服務開發過程復雜&#xff0c;從需求分析到最終代碼實現&#xff0c;每個環節都需要耗費大量時間和精力。飛算 JavaAI 的出現&#xff0c;猶如一道曙光&#xff0c;為開發…

Python—Excel全字段轉json文件(極速版+GUI界面打包)

目錄 專欄導讀1、背景介紹2、庫的安裝3、核心代碼4、完整代碼(簡易版)5、進階版(GUI)總結專欄導讀 ?? 歡迎來到Python辦公自動化專欄—Python處理辦公問題,解放您的雙手 ?????? 博客主頁:請點擊——> 一晌小貪歡的博客主頁求關注 ?? 該系列文章專欄:請點擊——…

2025年光電科學與智能傳感國際學術會議(ICOIS 2025)

重要信息 官網&#xff1a;www.ic-icois.org 時間&#xff1a;2025年3月14-16日 地點&#xff1a;中國-長春 簡介 2025年光電科學與智能傳感國際學術會議&#xff08;ICOIS 2025&#xff09;將于2025年3月14-16日在中國-長春隆重召開。會議將圍繞“光學光電”、“智能傳感”…

企業微信里可以使用的企業內刊制作工具,FLBOOK

如何讓員工及時了解公司動態、行業資訊、學習專業知識&#xff0c;并有效沉淀企業文化&#xff1f;一份高質量的企業內刊是不可或缺的。現在讓我來教你該怎么制作企業內刊吧 1.登錄與上傳 訪問FLBOOK官網&#xff0c;注冊賬號后上傳排版好的文檔 2.選擇模板 FLBOOK提供了豐富的…

YOLOv5 + SE注意力機制:提升目標檢測性能的實踐

一、引言 目標檢測是計算機視覺領域的一個重要任務&#xff0c;廣泛應用于自動駕駛、安防監控、工業檢測等領域。YOLOv5作為YOLO系列的最新版本&#xff0c;以其高效性和準確性在實際應用中表現出色。然而&#xff0c;隨著應用場景的復雜化&#xff0c;傳統的卷積神經網絡在處…

跟我學C++中級篇——定時器的設計

一、定時器 談到定時器&#xff0c;理論上講是各種語言和各種設計都無法避開的一個技術點。對于定時器來說&#xff0c;表面上就是一種時間間隔的處理約定&#xff0c;但對程序來說&#xff0c;可能就是設計層面、接口層面和庫或框架以及系統應用的一個大集合。不同的系統&…

智能機器人加速進化:AI大模型與傳感器的雙重buff加成

Deepseek不僅可以在手機里為你解答現在的困惑、占卜未來的可能&#xff0c;也將成為你的貼心生活幫手&#xff01; 2月21日&#xff0c;追覓科技旗下Dreamehome APP正式接入DeepSeek-R1大模型&#xff0c;2月24日發布的追覓S50系列掃地機器人也成為市面上首批搭載DeepSeek-R1的…

PostgreSQL10 邏輯復制實戰:構建高可用數據同步架構!

PostgreSQL10 邏輯復制實戰&#xff1a;打造高可用數據同步架構&#xff01; 概述 PostgreSQL 10 引入了邏輯復制&#xff08;Logical Replication&#xff09;&#xff0c;為數據庫高可用和數據同步提供了更靈活的選擇。PostgreSQL 復制機制主要分為物理復制和邏輯復制兩種&…

LVS+Keepalived高可用群集配置案例

以下是一個 LVSKeepalived 高可用群集配置案例&#xff1a; 1、環境準備 LVS 主調度器&#xff08;lvs1&#xff09;&#xff1a;IP 地址為 192.168.8.101&#xff0c;心跳 IP 為 192.168.4.101LVS 備調度器&#xff08;lvs2&#xff09;&#xff1a;IP 地址為 192.168.8.102…

原生家庭獨立的藝術:找到自我與家庭的平衡點

原生家庭獨立的藝術&#xff1a;找到自我與家庭的平衡點 &#x1f331; 引言 &#x1f308; 小林剛剛和父母結束了一次激烈的電話對峙。父母堅持認為他應該回到家鄉工作&#xff0c;“這樣我們也能照顧你”&#xff0c;而他則努力解釋自己在大城市的職業規劃。掛掉電話后&…