DungDaj 发表于 2023-2-2 15:17

Unity XR Interaction Toolkit 组件解析(一)Action-based 和 Device-based 的区别

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

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

XR Toolkit Interaction 官方文档:https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.1/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 键”时,触发的是“抓取”这个动作。

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

XR Input Subsystem 使用起来更加简单,但是动作与设备按键的绑定是无法修改的(因为 Unity 官方已经帮我们定义好了)

Input System 可以自由配置动作和按键的映射关系,灵活性更高。

比如我想按下手柄的 Trigger 键来进行抓握,可以直接在 Input Action Asset (Input System 里的功能)里进行更改。但是 XR Input Subsystem 只允许按下手柄的 Grip 键来进行抓握。

而 Device-based 对应的是 XR Input Subsystem

Action-based 对应的是 Input System

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

转载于:https://blog.csdn.net/qq_46044366/category_11656077.html
页: [1]
查看完整版本: Unity XR Interaction Toolkit 组件解析(一)Action-based 和 Device-based 的区别