如何在 Unity 项目之间共享新的 SteamVR ActionSet 和绑定

How to Share new SteamVR ActionSets and Bindings between Unity Projects

我正在 Unity 中开发一个 VR 模块,我希望能够将其作为资产包导入到我的任何 Unity 项目中。该软件包需要定义来自 Vive 控制器按钮的输入,以便在游戏过程中将其打开。我想以某种方式在项目之间共享这个动作集和按钮绑定,这样我就不必每次都想使用它时手动创建动作和绑定。

有什么方法可以在项目之间共享 SteamVR 输入设置吗?特别是一个完整的输入动作集,及其关联的控制器绑定。

我试过将 SteamVR_Input 文件夹作为一个包导出,也尝试过包含 SteamVR 文件夹,但都没有用。重新导入后,我可以在 SteamVR_Input 文件夹的项目文件夹中看到导入的动作集,但它没有显示在输入 window 中(Window 菜单 -> SteamVr 输入)。但是,实时输入视图会显示列表中的操作,但不会记录任何按钮按下操作。

更新 Unity 2019.2:

这似乎已经解决了。

  1. 在源项目中,转到 SteamVR 输入 window,单击高级。
  2. 创建部分绑定文件夹。将其重命名为您想要的名称。请注意,它会自动添加一个 SteamVR_ 前缀。所以我的默认名称以 SteamVR_SteamVR_ 开头。我需要删除建议的名称并将其命名为我的项目名称。
  3. 出于某种原因,它在项目的基础文件夹中创建它,而不是资产文件夹。
  4. 在Windows资源管理器中,将其拖到源项目的Assets文件夹中。
  5. 在 Unity 编辑器(源项目)中,它现在应该提示您导入设置,但它检测到这些操作已经存在。单击合并。
  6. 确保您的动作集仍在 SteamVR 输入中 window。
  7. 现在您可以从此文件夹中导出一个 unitypackage。
  8. 现在可以在目标项目中导入unitypackage了,导入后应该会提示加载动作!耶。

注意:如果我在创建后重命名部分绑定文件夹,我 运行 会遇到问题。它不会再将其识别为操作并且不会提示导入。要重命名部分绑定文件夹,您需要重新创建它并再次执行上述步骤。

旧答案(已过时):

注意:此答案基于 SteamVR 插件 2.2b4 的测试版。它可能会在未来的版本中更改

好的,我成功了。据我所知,创建一个包含绑定和操作的 unitypackage 仍然不太可能,但它比以前好多了。

要将 ActionSet 和绑定从项目 1 移动到项目 2:

在第一个项目中:使用您想要的动作和绑定创建一个新的动作集。

转到 Window 菜单 > SteamVR 输入

单击“高级设置”,然后单击“创建”。这将在您的项目某处创建一个文件夹。

这就是问题所在。这个文件夹好像不能打包。但是:

重要提示:在您的第二个项目中删除 SteamVR_Input 文件夹(您可能需要备份它以防万一)

将这个创建的文件夹从第一个项目(从 windows 资源管理器)拖到第二个项目(在 Unity 中打开)的项目视图中的 Assets 文件夹中。如果你在 unity 之外这样做,它将不起作用。

它会提示您导入 "partial bindings" 并将您的自定义 ActionSet 添加到此其他项目。在第二个项目中打开 Window 菜单 > SteamVR_Input 然后你应该会在顶部看到你导入的 ActionSet。单击 "Save and Generate" 为该项目重新创建一个新的 SteamVR_Input 文件夹。

瞧!它应该工作。 还没拿到能不能打包成资产包

在花了很多令人沮丧的时间之后,我发现了以下简单的过程。 (在 Unity 2019.1.14f1 中,我怀疑它也适用于更高版本)。

在项目 1 中:

在 SteamVR 图形界面中编辑绑定后选择

至关重要

Replace Default Binding

这样做的结果是您的绑定完全保存在

Assets/StreamingAssets/SteamVR

(默认情况下,但这是一个非常好的位置)

顺便说一句,如果您想在独立构建中使用绑定,这也是 所必需的

在项目 2 中: 通过文件系统或通过导出和导入自定义包,将项目 1 中的 StreamingAssets/SteamVR 文件夹复制到项目 2 中的相应位置。

从那时起,您的绑定在 project2 中可用!