关闭 Godot 中的游戏

Fra*_*ora 4 html game-engine godot


我正在使用 Godot 创建一个网页游戏。
为了关闭游戏,我尝试使用“get_tree().quit()”。
如果我在 IDE 上使用它,它就可以工作。当我在我的服务器上尝试它时(导出项目后)它不起作用。
我确信导出设置没问题。
我怎样才能关闭游戏?
并且,如何添加超文本链接(类似于 html`` 标记)?
感谢您的回答,并对我的英语不好表示歉意

The*_*aot 6

退出游戏

在网络上,使用

get_tree().quit()
Run Code Online (Sandbox Code Playgroud)

应该管用。也就是说,它应该停止运行时。游戏将不会继续运行。它不会关闭浏览器选项卡。事实上,浏览器对关闭选项卡的脚本有限制。

注意:确保您使用的是 Godot 3.2.3 或更高版本(请参阅#39604)。我试过了,有效。


建立链接

您可以使用LinkButton,这是一个看起来像超链接的按钮。并且您希望将其"pressed"信号连接到您使用的脚本OS.shell_open,例如:

OS.shell_open("https://example.com")
Run Code Online (Sandbox Code Playgroud)

注意:这会在 Web 导出中产生一个新选项卡。在桌面上它会打开默认浏览器。


浏览器导航

既然您询问有关关闭游戏和建立链接的问题,我冒昧地猜测您真正想要的是导航(离开游戏并转到另一个页面)。

在 Web 导出中,您可以访问浏览器的 JavaScript 运行时来执行此操作。

在 Godot 3 中使用JavaScript.eval

JavaScript.eval("window.location.href='https://example.com'")
Run Code Online (Sandbox Code Playgroud)

在 Godot 4 中改用JavaScriptBridge.eval

JavaScriptBridge.eval("window.location.href='https://example.com'")
Run Code Online (Sandbox Code Playgroud)

检测网络构建

您可以用来OS.get_name识别平台。

例如,您可以这样做:

戈多3

if OS.get_name() == "HTML5":
   JavaScript.eval("window.location.href='https://example.com'")
else:
   OS.shell_open("https://example.com")
Run Code Online (Sandbox Code Playgroud)

戈多4

if OS.get_name() == "Web":
   JavaScriptBridge.eval("window.location.href='https://example.com'")
else:
   OS.shell_open("https://example.com")
Run Code Online (Sandbox Code Playgroud)

如果这是一个 Web 构建,它将导航浏览器,但如果不是,它将尝试打开默认浏览器。