admin管理员组

文章数量:1589807

个人持续更新的 Unity VR 开发系列教程专栏(基于 OpenXR + XR Interaction Toolkit):
https://blog.csdn/qq_46044366/category_11656077.html

上面这个专栏主要介绍了 OpenXR + XR Interaction Toolkit 开发的一些常用功能。

而本专栏记录了我使用 XR Interaction Toolkit 的过程中遇到的一些疑惑点和我认为比较重要的知识点,相当于对上面这个专栏的补充说明,能让大家对 XR Interaction Toolkit 的功能和部分原理有个更深刻的理解。

XR Toolkit Interaction 官方文档:(选择自己正在使用的版本)
https://docs.unity3d/Packages/com.unity.xr.interaction.toolkit@2.3/manual/index.html


📕Action-based 和 Device-based 的区别

在我们使用或添加 XR Interaction Toolkit 的一些组件时,会经常看到同样的组件会有两种版本,一种时后缀加 (Action-based) ,另一种是后缀加 (Device-based),如图所示:



然后我们可以看一下 XR Controller(Action-based) 和 XR Controller(Device-based) 在 Inspector 面板上的区别:

XR Controller(Action-based):

XR Controller(Device-based):

而在我写的系列教程中,使用的都是 Action-based 的组件,那么这两种版本到底有什么区别呢?

⭐⭐⭐

那么这就涉及到 Unity VR 中的两种输入系统:Input System 和 XR Input Subsystem

这两种系统在我写的 Unity VR 系列教程(基于 OpenXR + XR Interaction Toolkit)中的第二篇(手部动画)中有进行介绍(链接:Unity VR开发教程 OpenXR+XR Interaction Toolkit 2.1.1 (二) 手部动画,可以看编写脚本控制手部动画的那部分)

总结来说,XR Input Subsystem 是 Unity 为了给不同 XR 厂商的设备做适配,推出的一款处理 XR 中动作与物理设备(比如 VR 手柄上各种按键)之间映射关系的输入系统。Input System 是 Unity 新推出的通用输入系统,同样需要配置动作和物理设备的映射关系,比如指定“按下手柄的 Grip 键”时,触发的是“抓取”这个动作。

而 Device-based 对应的是 XR Input Subsystem
Action-based 对应的是 Input System

它们的区别是:(下面先用设备按键来指代物理设备)

  • XR Input Subsystem 使用起来更加简单,但是动作与设备按键的绑定是无法修改的(因为 Unity 官方已经帮我们定义好了)
  • Input System 可以自由配置动作和按键的映射关系,灵活性更高。

比如我想按下手柄的 Trigger 键来进行抓握,可以直接在 Input Action Asset (Input System 里的功能)里对 Select 动作和设备按键的绑定进行更改。而 XR Input Subsystem 预先提供了几个按键配置,比如 “按下手柄的 Grip 键” 就是用 “Grip” 来表示,“按下手柄的 Trigger 键” 就是用 “Trigger” 表示,这些按键配置是无法修改的,我们只能在 XR Controller(Device-based)中的 Select Usage 中切换预先设定的按键配置。

Unity 官方推荐使用的是 Action-based 的版本,因为它的灵活性更高。

本文标签: 组件区别InteractionxRUnity