共用方式為


可互動專案 - MRTK3

MRTK 是以 Unity 的 XR 互動工具組所提供的 為基礎 XRBaseInteractable 。 MRTK 完全支援現有的可互動行為和 API,而我們的所有自訂可互動專案都會遵守現有的 XRI 可互動 API。

對於不熟悉 XRI 的開發人員, 強烈建議 您先檢閱 Unity 的 XRI 架構檔

為了擴充 XRI 中包含的可互動機制,MRTK 提供兩個基類,其中一個可建置進階互動,一個延伸另一個。

可互動繼承圖表

  • MRTKBaseInteractable : XRBaseInteractable
    • 此類別會針對不同類型的互動專案提供篩選和標記。 雖然基底 XRI XRBaseInteractable 不會區分互動器類型, MRTKBaseInteractable 但提供便利函式來檢查是否發生常見的互動類型。 像是 或 IsGrabSelectedIsGazeHovered 便利屬性是查詢參與互動者是否對應實作指定介面 (或 IGazeInteractorIGrabInteractor) 的快捷方式。 這些旗標比逐一查看 或 interactorsSelecting 清單 interactorsHovering 更有效能。 此外,在開發人員想要排除特定輸入形式的情況下, MRTKBaseInteractable 可以篩選/拒絕特定類型的互動專案。
  • StatefulInteractable : MRTKBaseInteractable
    • 雖然 MRTKBaseInteractable 新增旗標和篩選,並避免將任何其他狀態新增至可互動,但引進實用的具狀態功能, StatefulInteractable 例如切換和變數選取。

嚴格區隔狀態和視覺效果

在 MRTK 2.x 中,互動專案通常負責驅動自己的視覺效果,可能是壓縮 3D 按鈕、暫留效果,或甚至只是在按一下時變更色彩。 這種方法的限制是互動邏輯與視覺效果緊密結合。 如果您要重新設計視覺效果,或使用不同的大小/形狀/位移/等。的 按鈕,互動腳本本身必須變更。

在 MRTK3 中, 可互動是純狀態和互動。 可互動的不會根據其內部狀態轉譯任何視覺變更或效果。 它只是一組狀態和互動邏輯,在視覺簡報設定之間高度可移植。

嚴格隔離狀態和視覺效果

相同的 PressableButton 腳本可用來建置波浪球、可按下的「追蹤板」類似平面,或按下時發出網路事件的抽象可按下。 腳本 PressableButton 甚至不小心「位置」;它可以在 Canvas 內部或固定的主體上。

為了驅動視覺效果,會使用個別的「視覺驅動程式」來輪詢可互動的狀態,並轉譯適當的意見反應。 StateVisualizer 是建議的低程式碼方法,可從可互動的狀態推動常見的視覺回饋效果,但開發人員可以自由撰寫自己的自訂視覺效果驅動程式。 例如,我們的按鈕元件通常會用於 StateVisualizer 其進階的 3D + 著色器回饋效果,但我們也提供一個範例 BasicPressableButtonVisuals ,示範如何在程式碼中撰寫簡單的視覺驅動程式。

變數選取

StatefulInteractable在基底 XRI 功能上,最實用的額外功能是變數 Selectedness 的支援。 雖然已選取或未選取基底 XRI 互動,但 MRTK StatefulInteractable 可以是選取的任何浮點分數。

在 XR 中工作時,這個概念很有用,因為幾乎所有形式的輸入都不再是二進位狀態。 動作控制器通常會有類比觸發程式 (或類比底線!) ,手部互動可以提供可變的「捏合」,而音量按下互動可能會讓按鈕或可推播表面變大。 您會看到這些變數、XR 中的類比互動,且 MRTK 已配備,可協助開發人員在這些類比輸入之上建置一個令人喜歡的互動。

各種不同的互動專案和類型互動都可以共同參與可互動的整體選取性。 值得注意的是,實 IVariableSelectInteractor 作的所有互動專案都會參與其類比選取量,通常是透過 max() 所有參與的互動專案。 此變數數量會與來自虛線樣式互動專案的二進位、非變數選取專案結合。

針對這類 PressableButton 衍生類別,會覆寫 函 Selectedness() 式,將額外的「要素」新增至選取性計算。 實 IPokeInteractor 作的互動專案可以根據其實體位置提供選取性,以及其實際按下可互動的方式。 其他衍生類別可以引進其他任意形式的選取。

變數選取性

針對 MRTK 提供的可互動專案, Selectedness() 而且 isSelected 一律會「同意」--換句話說,您絕對不會觀察 Selectedness() 大於 SelectThreshold 沒有對應的 XRI isSelected 和隨附的 interactorsSelecting 互動器。

重要

您的自訂可互動子類別可以明顯覆寫 Selectedness 到完全中斷與 XRI isSelected 連線的一些其他值;不過,我們的互動專案不會這麼做,我們強烈建議不要這麼做。 一般而言,絕對不要撰寫沒有對應互動器的互動 在大部分的情況下,XRI 選取專案會足夠,而您建置的任何自訂互動都應該撰寫為互動專案。

當您建立支援判斷 的新方法的 Selectedness() 自訂可互動時,只需覆寫 方法,並將新的選取範圍與現有的選取量結合。 如果您使用 StateVisualizer 或接聽變數選取範圍的任何其他視覺層,它會根據新的選取類型回應。

將 UGUI 事件對應至 XRI

在某些情況下,最好有可互動的回應 UGUI 事件,例如滑鼠、遊戲台或觸控螢幕輸入。 是 UGUI 的 , UGUIInputAdapter 會接收 UGUI Selectable 事件,並在存在時將其 CanvasProxyInteractor 轉送到 。

UGUI 配接器流程

CanvasProxyInteractor當 收到 UGUIInputAdapter UGUI 事件的通知時,它會在相關的可互動上發出對等的 XRI 動作。 UGUI 輸入與 XRI 動作之間的對應有點遺失,而且是作用中開發的區域。

透過此系統,針對沉浸式平臺、手部、運動控制器和 3D 輸入所建置的現有 XRI 互動功能,可以同樣地回應可存取的 2D 控制項,例如滑鼠和遊戲台。