如何使用Godot导出适配Linux系统的采用OpenVR插件的VR游戏
Godot OpenVR插件Linux导出无法检测头显解决方案
问题根因
编辑器中测试正常是因为你通过Steam Runtime启动Godot,运行环境自带OpenVR依赖的底层驱动、设备访问库及对应环境变量;直接导出的x86_64二进制默认不带这套运行环境,因此无法识别头显设备。
可选解决方案
方案一:封装Steam Runtime启动脚本(操作简单,兼容性最佳)
- 导出游戏时选择导出为文件夹格式,确保导出目录内包含完整的
addons/godot_openvr/bin/路径,且路径下存在libgodot_openvr.x86_64.so动态库*(注意导出时要在导出配置的资源过滤选项中勾选addons目录,否则插件文件会被遗漏)* - 在导出的游戏根目录下新建启动脚本
start_game.sh,写入以下内容:
#!/bin/bash # 自动检索本地Steam Runtime路径 STEAM_RUNTIME=$(find ~/.steam/steam/ubuntu12_32/steam-runtime -name "run.sh" 2>/dev/null | head -n 1) if [ -z "$STEAM_RUNTIME" ]; then echo "未检测到Steam安装,请先安装Steam并配置好VR运行环境" exit 1 fi # 替换<游戏二进制文件名>为你导出的x86_64文件名称 exec "$STEAM_RUNTIME" "$(dirname "$0")/<游戏二进制文件名>.x86_64"
- 给脚本添加执行权限:
chmod +x start_game.sh
用户直接运行start_game.sh即可启动游戏,无需额外操作。如果需要上架Steam平台,直接在Steamworks后台的游戏启动配置中,将启动参数设置为steam-runtime/run.sh %command%即可,Steam会自动补全运行环境路径。
方案二:编译全独立二进制(无Steam依赖,适合分发非Steam版本)
- 拉取对应版本的Godot源码,将godot_openvr作为内置模块集成到Godot源码中
- 编译Godot导出模板时添加
use_static_cpp=yes编译参数,将OpenVR的所有依赖库静态链接到导出模板中 - 导出游戏时使用你自行编译的导出模板,生成的二进制本身就包含所有依赖,无需Steam Runtime即可运行
注意该方案需要配套打包SteamVR的udev设备规则文件,否则普通用户运行时没有VR头显的访问权限,规则文件默认路径为/usr/lib/udev/rules.d/60-steamvr.rules,可随安装包一起分发,安装时写入对应系统路径即可
内容的提问来源于stack exchange,提问作者Double Sept
相关产品推荐
相关产品推荐

