如何在本地播放 Godot 4 HTML 项目?

问题描述 投票:0回答:3

我已经导出了 Godot 4 的网络版本,它位于我本地驱动器上的一个文件夹中。

由于 SharedArrayBuffer 依赖项,我不能只双击 index.html 文件。如果我这样做,我会看到此错误:

错误 在 Web 上运行 Godot 项目需要以下功能 缺少:跨源隔离 - 检查 Web 服务器配置 (发送正确的标头) SharedArrayBuffer - 检查网络服务器 配置(发送正确的标头)

如何在本地运行?

webgl godot4 sharedarraybuffer
3个回答
3
投票

这个 python 脚本允许您打开一个在端口 8000 运行的简单 Web 服务器:

#!/usr/bin/env python3
from http import server # Python 3

class MyHTTPRequestHandler(server.SimpleHTTPRequestHandler):
        def end_headers(self):
                self.send_my_headers()
                server.SimpleHTTPRequestHandler.end_headers(self)

        def send_my_headers(self):
                self.send_header("Access-Control-Allow-Origin", "*")
                self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
                self.send_header("Cross-Origin-Opener-Policy", "same-origin")

if __name__ == '__main__':
        server.test(HandlerClass=MyHTTPRequestHandler)

将此代码添加到同一文件夹或 Web 导出(

server.py
所在位置)中名为
index.html
的文件中

然后用终端进入文件夹并执行:

> python3 server.py 

然后在浏览器中输入 URL:

localhost:8000

来源


0
投票

官方文档在 Exporting for the Web 页面上讨论了这一点,特别是 Serving the files 部分:

Godot 存储库包含一个 用于托管本地 Web 服务器的 Python 脚本。该脚本旨在测试 Web 编辑器,但也可用于测试导出的项目。

这是链接脚本的当前版本:

#!/usr/bin/env python3 from http.server import HTTPServer, SimpleHTTPRequestHandler, test # type: ignore from pathlib import Path import os import sys import argparse import subprocess class CORSRequestHandler(SimpleHTTPRequestHandler): def end_headers(self): self.send_header("Cross-Origin-Opener-Policy", "same-origin") self.send_header("Cross-Origin-Embedder-Policy", "require-corp") self.send_header("Access-Control-Allow-Origin", "*") super().end_headers() def shell_open(url): if sys.platform == "win32": os.startfile(url) else: opener = "open" if sys.platform == "darwin" else "xdg-open" subprocess.call([opener, url]) def serve(root, port, run_browser): os.chdir(root) if run_browser: # Open the served page in the user's default browser. print("Opening the served URL in the default browser (use `--no-browser` or `-n` to disable this).") shell_open(f"http://127.0.0.1:{port}") test(CORSRequestHandler, HTTPServer, port=port) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("-p", "--port", help="port to listen on", default=8060, type=int) parser.add_argument( "-r", "--root", help="path to serve as root (relative to `platform/web/`)", default="../../bin", type=Path ) browser_parser = parser.add_mutually_exclusive_group(required=False) browser_parser.add_argument( "-n", "--no-browser", help="don't open default web browser automatically", dest="browser", action="store_false" ) parser.set_defaults(browser=True) args = parser.parse_args() # Change to the directory where the script is located, # so that the script can be run from any location. os.chdir(Path(__file__).resolve().parent) serve(args.root, args.port, args.browser)
提供您的文件:

将链接的脚本保存到名为serve.py的文件中,将此文件移动到包含导出项目的index.html的文件夹中,然后在同一文件夹中的命令提示符中运行以下命令:

# You may need to replace `python` with `python3` on some platforms. python serve.py --root .
    

0
投票
如果您更喜欢 c#/.net 生态系统而不是 Python,您可能会觉得使用“dotnetserve”工具更熟悉使用

dotnet-serve

要启动导出到本地“Web”配置文件的 godot 项目,您可以使用以下 dotnet-serve 命令:

dotnet serve --directory <YOUR_GODOT_EXPORT_TO_WEB_FOLDER> --open-browser -h "Cross-Origin-Opener-Policy: same-origin" -h "Cross-Origin-Embedder-Policy: require-corp" -h "Access-Control-Allow-Origin: *"

替换为您将 godot 项目通过 Web 导出到的文件夹。使用 Windows,您可以将命令行保存到“.bat”文件中,然后从文件资源管理器中双击它以同时启动服务器和浏览器。

© www.soinside.com 2019 - 2024. All rights reserved.