2个版本
0.1.1 | 2020年11月5日 |
---|---|
0.1.0 | 2020年11月5日 |
#1928 在 游戏开发
每月下载 34 次
8KB
112 代码行
为Bevy捆绑资源
功能
- 如果本地文件系统中存在,则使用本地文件系统中的资源进行开发,对于找不到的资源,则仅回退到捆绑资源。
- 提供了一个易于使用的
inline_assets!
宏来捆绑资源(或可以直接使用API)。
状态
适用于Bevy 0.3.0。请参阅Bevy问题606和相关的PR以讨论对捆绑资源的本地Bevy支持。
安装
cargo add bevy_prototype_inline_assets
或者,在你的Cargo.toml
bevy_prototype_inline_assets = "0.1.0"
用法
use bevy::asset::{AssetPlugin, LoadState};
use bevy::prelude::*;
use bevy_prototype_inline_assets::{inline_assets, InlineAssets, InlineAssetsPlugin};
use std::collections::HashMap;
use std::path::Path;
fn main() {
let inline_assets = inline_assets![
"assets/image.png",
"assets/font.ttf",
"assets/audio.mp3",
...
];
App::build()
.add_resource(inline_assets)
.add_plugins_with(DefaultPlugins, |group| {
group.add_after::<AssetPlugin, _>(InlineAssetsPlugin)
})
.init_resource::<HashMap<&'static Path, HandleUntyped>>()
.add_startup_system(setup.system())
.add_system(spawn.system())
.run();
}
fn setup(
mut commands: Commands,
inline_assets: Res<InlineAssets>,
asset_server: Res<AssetServer>,
mut inline_asset_handles: ResMut<HashMap<&'static Path, HandleUntyped>>,
) {
*inline_asset_handles = inline_assets.load_all(asset_server);
}
fn spawn(
mut commands: Commands,
inline_asset_handles: Res<HashMap<&'static Path, HandleUntyped>>,
asset_server: Res<AssetServer>,
loaded: Local<bool>,
) {
if *loaded
|| asset_server.get_group_load_state(inline_asset_handles.values().map(|h| h.id))
!= LoadState::Loaded
{
return;
}
let handle =
inline_asset_handles.get(Path::new("assets/image.png")).unwrap().clone().typed();
...
}
依赖
~15MB
~320K SLoC