如何在WebGL运行时运行其他Unity可执行文件以展示过往游戏?
核心结论:无法在浏览器WebGL运行时直接运行本地EXE文件
浏览器的沙箱安全机制严格限制了网页访问本地可执行文件的权限,WebGL作为浏览器内的图形渲染技术,完全受限于这个安全规则——没有任何合法方式能让WebGL直接调用或内嵌本地EXE,强行尝试会触发浏览器的安全拦截,也不符合Web标准。
可行替代方案(按优先级排序)
1. 将旧游戏打包为WebAssembly(Wasm)/WebGL版本
如果旧游戏使用Unity、Unreal、Godot等支持Web导出的引擎,可直接重新打包为Wasm/WebGL版本:
- 大部分引擎支持一键导出,无需手动迁移所有资源代码,仅需少量适配(比如调整资源路径、适配浏览器输入逻辑)
- 导出后的版本可直接内嵌到你的作品集WebGL游戏中(比如通过DOM嵌入或引擎自带的加载器加载),实现真正的“游戏内嵌游戏”效果
2. 用iframe内嵌已有WebGL版本
如果旧游戏已经有WebGL版本:
- 可在你的作品集WebGL应用的DOM层嵌入一个
iframe,指向旧游戏的WebGL页面,实现同页面内嵌展示(无需跳转新网页) - 注意:如果你的作品集是纯原生WebGL代码,需要处理DOM与WebGL画布的层级关系,确保iframe能正常显示
3. 制作游戏预览内容
如果打包Wasm成本过高,可选择:
- 录制旧游戏的核心玩法视频,嵌入到作品集游戏中,搭配文字说明展示游戏特色
- 提取旧游戏的核心资源,制作一个轻量的交互Demo(比如展示核心机制、美术风格),直接集成到作品集里
4. 桌面端环境的特殊方案(仅适用于非浏览器场景)
如果你的作品集游戏是用Electron等框架打包的桌面WebGL应用:
- 可通过Node.js的
child_process模块调用本地EXE,实现外部启动或嵌入到Electron窗口中(比如用child_process.spawn启动exe) - 示例代码(Electron环境):
const { spawn } = require('child_process'); // 启动旧游戏exe const gameProcess = spawn('path/to/your/old/game.exe'); - 注意:此方案仅适用于桌面端,无法在浏览器环境中运行,且不能将exe内嵌到WebGL画布中,只能作为独立进程或窗口存在
备选方案补充
你提到的“打开新网页加载WebGL版本”是最稳妥的无成本方案,仅需在作品集游戏中添加跳转按钮,引导用户打开旧游戏的WebGL页面,适合快速实现展示需求。
内容的提问来源于stack exchange,提问作者ozaneski13
相关产品推荐
相关产品推荐

