gpt4 book ai didi

rust - Amethyst 的 Loader 找不到 Assets 文件

转载 作者:行者123 更新时间:2023-11-29 08:00:54 24 4
gpt4 key购买 nike

我正在使用 Rust Amethyst 游戏引擎加载名为 ground.png 的纹理,但 Loader 似乎找不到该文件:

//...
let assets_dir = format!("{}", env!("CARGO_MANIFEST_DIR"));
let mut game = Application::build(assets_dir, Example)?.build(game_data)?;

我的 assets_dir 是项目的根文件夹,在加载我的文件时,我附加了 textures/ground.png:

let texture_handle = {
let loader = world.read_resource::<Loader>();
let texture_storage = world.read_resource::<AssetStorage<Texture>>();
loader.load(
"textures/ground.png",
PngFormat,
Default::default(),
(),
&texture_storage,
)
};

我的文件目录是这样的:

├── src
│ └── main.rs
├── Cargo.toml
└── textures
└── ground.png

我得到的错误是获取纹理时的 None 值:

assert!(
world
.read_resource::<AssetStorage<Texture>>()
.get(&texture_handle) != None
); //panics

我使用的是 amethyst 0.8。

最佳答案

希望这张表能帮到你,因为有很多可能的答案。

所有行都假定您正在使用以下方式加载纹理:

loader.load("path/to/texture.png", ..)

列出的路径是相对于存储库目录的。

| Amethyst version | What the code uses for assets dir | How you run the executable | Where the texture should be |
| ---------------- | --------------------------------- | -------------------------- | --------------------------- |
| 0.10.0 | `"assets"` | cargo run | `$repo/target/$profile/assets/path/to/texture.png` |
| 0.10.0 | `format!("{}/assets", env!("CARGO_MANIFEST_DIR"))` | cargo run | `$repo/assets/path/to/texture.png` |
| 0.10.0 | `"assets"` | `./target/$profile/app` | `$repo/assets/path/to/texture.png` |
| 0.10.0 | `env!("CARGO_MANIFEST_DIR")` | `./target/$profile/app` | `$repo/assets/path/to/texture.png` |
| 0.10.0 | `option_env!("CARGO_MANIFEST_DIR").map(|d| format!("{}/assets", d)).unwrap_or("assets")` | cargo run | `$repo/assets/path/to/texture.png` |
| 0.10.0 | `option_env!("CARGO_MANIFEST_DIR").map(|d| format!("{}/assets", d)).unwrap_or("assets")` | `./target/$profile/app` | `$repo/target/$profile/assets/path/to/texture.png` |
| `master` | `application_root_dir()` | cargo run | `$repo/assets/path/to/texture.png` |
| `master` | `application_root_dir()` | `./target/$profile/app` | `$repo/target/$profile/assets/path/to/texture.png` |

前 4 个不是很好的解决方案(开发路径或玩家路径错误)。第 5 种和第 6 种容忍它的方法,这是在 master 上使用 application_root_dir() 函数为您完成的。

关于rust - Amethyst 的 Loader 找不到 Assets 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52019501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com