如何使SteamVR仪表板覆盖应用程序自动启动?

时间:2019-01-16 16:31:11

标签: c# openvr steamvr

我制作了自己的仪表板覆盖应用程序,该应用程序使我可以在使用控制器绑定的游戏过程中更改游戏区域的高度。

我在Valve.VR顶部的c#中使用OpenVR api,我使用以下代码初始化了此应用程序:(为简化起见,已压缩)

OpenVR.Init(ref error, EVRApplicationType.VRApplication_Overlay);
OpenVR.GetGenericInterface(OpenVR.IVRCompositor_Version, ref error);
OpenVR.GetGenericInterface(OpenVR.IVROverlay_Version, ref error);
CVROverlay overlay = OpenVR.Overlay;
ulong overlayHandle = 0;
ulong thumbnailHandle = 0;
overlay.SetOverlayFromFile(thumbnailHandle, @"image.png");
overlay.CreateDashboardOverlay("OvrName", "OvrName", ref overlayHandle, ref thumbnailHandle);
overlay.ShowOverlay(overlayHandle);

这很好,我可以启动我的应用程序,该应用程序启动SteamVR,然后启动游戏。但是问题是如果我启动另一个游戏,我的覆盖应用程序会关闭,并且不会重新启动,因为SteamVR不会自动启动它。

在SteamVR设置>应用程序下,我的应用程序被列为覆盖应用程序,并且我选中了使它自动启动的复选框,但这似乎没有任何作用。重新启动SteamVR时,我的应用程序未启动,如果再次检查设置,则未选中该框。

我注意到下面的代码行大概使自动启动成为可能:

OpenVR.Applications.SetApplicationAutoLaunch("OvrName", true);

第一个参数是pchAppKey,我不确定应该将其设置为什么,当我使用此行代码运行应用程序时,出现“ VRApplicationError_UnknownApplication”错误。

我假设Steam在某个地方存储了用于应用程序的密钥,但是我不确定如何为我的应用程序生成密钥,因为我的应用程序是独立的,不会通过Steam卸载。

有关此内容的文档似乎不存在,并且Google搜索产生不相关的结果。希望这里的人对此有经验,谢谢。

0 个答案:

没有答案