我已经导出了 Godot 4 的网络版本,它位于我本地驱动器上的一个文件夹中。
由于 SharedArrayBuffer 依赖项,我不能只双击 index.html 文件。如果我这样做,我会看到此错误:
错误 在 Web 上运行 Godot 项目需要以下功能 缺少:跨源隔离 - 检查 Web 服务器配置 (发送正确的标头) SharedArrayBuffer - 检查网络服务器 配置(发送正确的标头)
如何在本地运行?
这个 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
官方文档在 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 .
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”文件中,然后从文件资源管理器中双击它以同时启动服务器和浏览器。