#assets #macro #bevy #loader #micro #systems #json

macro micro_games_macros

通过Bevy构建复杂系统的实用宏

6个版本 (3个破坏性版本)

0.5.0 2024年7月9日
0.4.0 2024年5月5日
0.3.1 2024年2月24日
0.3.0 2023年11月19日
0.1.1 2023年10月22日

#208 in 进程宏

Download history 118/week @ 2024-05-04 4/week @ 2024-05-11 11/week @ 2024-05-18 3/week @ 2024-05-25 109/week @ 2024-07-06 6/week @ 2024-07-13 26/week @ 2024-07-27

每月141次下载

Apache-2.0

49KB
1K SLoC

Micro Game Macros

docs.rs Crates.io

构建游戏的实用宏集合

当前版本支持:0.5.x -> Bevy 0.14

对于可执行示例,请访问rustdoc和/或阅读src/lib.rs中的doctests

JSON加载器

为给定的资产生成Bevy资源加载器,支持定义该资产类型单个实例或该资产类型列表的JSON文件。资产实例需要可识别,尽管用于识别特定资产的性质是可定制的

#[derive(JsonLoader, TypePath, TypeUuid, Serialize, Deserialize, Asset)]
#[loader(
    extension = "asset.json", uuid = "00000000-0000-0000-0000-000000000000",
    storage = inner_module::SimpleAssetLocator,
    asset_name = some_asset_prop, index_name = set_of_assets
)]
#[uuid = "00000000-0000-0000-0000-000000000001"]
pub struct MyAsset {
    /// The asset identifier needs to implement [std::fmt::Display]
    #[asset_id]
    uniq_ident: usize,
}

资产系统

为Bevy游戏中的管理加载生成一组结构体和系统

use bevy::prelude::{Image, Res, Resource};
use micro_games_macros::asset_system;

#[asset_system]
pub struct AssetHandles {
    my_asset: Image,
}

pub fn loading_system(mut loader: AssetHandlesLoader) {
    loader.load_my_asset("path/to/asset.png", "Asset");
}
pub fn use_asset_system(assets: Res<AssetHandles>) {
    let handle = assets.my_asset("Asset");
}

从内部

为封装单个内部类型的结构体(支持元组和命名属性结构体)实现From<T>

use micro_game_macros::FromInner;

#[derive(FromInner)]
struct MyType(usize);

fn example() {
    let value = MyType::from(123usize);
}

Kayak小部件

为Kayak UI的"小部件"特性行简单的派生

use micro_game_macros::Widget;

#[derive(Widget)]
struct MyComponent;

// ... Other Kayak Setup ...

依赖项

~265–710KB
~17K SLoC