1

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

有没有办法在项目之间共享 SteamVR 输入设置?特别是一个完整的输入操作集,及其相关的控制器绑定。

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

4

2 回答 2

1

更新 Unity 2019.2:

现在这似乎已解决。

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

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

旧答案(过时):

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

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

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

在第一个项目中:使用所需的操作和绑定创建一个新的操作集。

转到窗口菜单 > SteamVR 输入

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

这就是问题所在。此文件夹似乎无法打包。但:

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

将此创建的文件夹从第一个项目(来自 Windows 资源管理器)拖到第二个项目的项目视图中的 Assets 文件夹中(在 Unity 中打开)。如果您在团结之外这样做,它将无法正常工作。

它将提示您导入“部分绑定”并将您的自定义 ActionSet 添加到此其他项目。在第二个项目中打开 Window Menu > SteamVR_Input,然后您应该会在顶部看到您导入的 ActionSet。单击“保存并生成”为该项目重新创建一个新的 SteamVR_Input 文件夹。

瞧!它应该工作。我还没有让它能够被打包在一个资产包中。

于 2019-01-15T15:04:20.777 回答
0

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

在项目 1 中:

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

替换默认绑定

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

资产/流媒体资产/SteamVR

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

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

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

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

于 2020-08-07T08:56:20.117 回答