将 Raylib-Rust 游戏编译为 WASM

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

我已成功将我的游戏编译为带有标志的 WASM:

EMCC_CFLAGS="-sUSE_GLFW=3 -sGL_ENABLE_GET_PROC_ADDRESS -sASYNCIFY -sASSERTIONS --preload-file src/resources" 货物构建 --release --target=wasm32-unknown-emscripten

但是,从浏览器打开游戏时立即崩溃,并出现错误:

WARNING: FILEIO: [src/resources/image.png] Failed to open file
thread 'main' panicked at src/main.rs:126:58:

could not load background image: "Image data is null. Either the file doesnt exist or the image type is unsupported."

这意味着浏览器无法加载这些图像,在我的代码中加载的图像如下:

   let sh_walk =
    Image::load_image("src/resources/walk.png").expect("could not load background image");

在二进制文件中运行的 WASM 编译游戏中如何加载资产?我正在考虑在运行时通过 HTTP 拉取图像,并在本地使用常规加载。

我已经将“src/resources”文件夹添加到 Web 服务器根目录,它们会在浏览器中加载,但 WASM 二进制文件不会拾取它。

rust webassembly rust-cargo emscripten raylib
1个回答
0
投票

解决方案是使用 EMCC_CFLAGS="-sUSE_GLFW=3 -sGL_ENABLE_GET_PROC_ADDRESS -sASYNCIFY -sASSERTIONS --embed-file src/resources" Cargo build --release --target=wasm32-unknown-emscripten 进行编译

这将使用 Emscripten 的模拟文件系统,它基本上是捆绑在 .data 文件中的所有资源。

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