#file-format #assets #bevy #json-file #yaml #gamedev

bevy_common_assets

Bevy 插件,支持从常见的文件格式(如json和yaml)加载您自己的资产类型

14 个版本 (重大更新)

0.11.0 2024年7月4日
0.10.0 2024年2月17日
0.8.0 2023年11月4日
0.7.0 2023年7月10日
0.3.0 2022年7月30日

#144 in 游戏开发

Download history 833/week @ 2024-05-04 649/week @ 2024-05-11 790/week @ 2024-05-18 633/week @ 2024-05-25 675/week @ 2024-06-01 619/week @ 2024-06-08 798/week @ 2024-06-15 593/week @ 2024-06-22 709/week @ 2024-06-29 953/week @ 2024-07-06 828/week @ 2024-07-13 892/week @ 2024-07-20 1236/week @ 2024-07-27 953/week @ 2024-08-03 966/week @ 2024-08-10 675/week @ 2024-08-17

每月下载 3,960 次
用于 26 个crates (16 直接使用)

MIT/Apache

42KB
636

Bevy common assets

crates.io docs license crates.io

一组 Bevy 插件,提供对常见文件格式的通用资产加载器。

支持格式

格式 功能 示例
json json json.rs
msgpack msgpack msgpack.rs
postcard postcard postcard.rs
ron ron ron.rs
toml toml toml.rs
xml xml xml.rs
yaml yaml yaml.rs
csv csv csv.rs

用法

启用您想使用的格式的功能。

定义您希望从文件中加载的类型,并为它们推导 serde::Deserializebevy::reflect::TypePathbevy::asset::Asset

#[derive(serde::Deserialize, bevy::asset::Asset, bevy::reflect::TypePath)]
struct Level {
    positions: Vec<[f32;3]>,
}

有了这些类型,您就可以开始添加资产插件。每个插件都将其应加载的资产类型作为泛型参数。您还可以为每个插件配置自定义文件扩展名

use bevy::prelude::*;
use bevy_common_assets::json::JsonAssetPlugin;
use bevy_common_assets::msgpack::MsgPackAssetPlugin;
use bevy_common_assets::postcard::PostcardAssetPlugin;
use bevy_common_assets::ron::RonAssetPlugin;
use bevy_common_assets::toml::TomlAssetPlugin;
use bevy_common_assets::xml::XmlAssetPlugin;
use bevy_common_assets::yaml::YamlAssetPlugin;

fn main() {
    App::new()
        .add_plugins((
            DefaultPlugins,
            JsonAssetPlugin::<Level>::new(&["level.json", "custom.json"]),
            RonAssetPlugin::<Level>::new(&["level.ron"]),
            MsgPackAssetPlugin::<Level>::new(&["level.msgpack"]),
            PostcardAssetPlugin::<Level>::new(&["level.postcard"]),
            TomlAssetPlugin::<Level>::new(&["level.toml"]),
            XmlAssetPlugin::<Level>::new(&["level.xml"]),
            YamlAssetPlugin::<Level>::new(&["level.yaml"])
        ))
        // ...
        .run();
}

#[derive(serde::Deserialize, bevy::asset::Asset, bevy::reflect::TypePath)]
struct Level {
    positions: Vec<[f32; 3]>,
}

上面的示例将加载以 .level.json.custom.json 结尾的json文件中的 Level 结构体,从以 .level.ron 结尾的ron文件中加载,等等...

请参阅 示例 了解使用不同格式的有效Bevy应用程序。

兼容的Bevy版本

主分支与最新的Bevy版本兼容。

bevy_common_assets 版本的兼容性

bevy_common_assets bevy
0.11 0.14
0.10 0.13
0.8 - 0.9 0.12
0.7 0.11
0.5 - 0.6 0.10
0.4 0.9
0.3 0.8
0.1 - 0.2 0.7
main 0.13
bevy_main main

许可

以下任一双重许可

由您选择。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的,任何有意提交以包含在作品中的贡献,均应按上述方式双授权,不附加任何额外条款或条件。

依赖项

~22–61MB
~1M SLoC