2个不稳定版本
0.2.0 | 2024年7月10日 |
---|---|
0.1.0 | 2024年4月16日 |
#1665 in 游戏开发
136 每月下载
7KB
59 行
seldom_singleton
seldom_singleton
为包含句柄的资源添加了一个辅助 SystemParam
。如果您正在使用Bevy的资产系统,例如,加载游戏中项目的列表及其属性,您最终会在资源中获得一个句柄,并且您需要获取 Res<Assets<MyItems>>
来获取所需的资产。此crate添加了一个辅助工具,让您无需额外的系统参数。
这是一个非常小的crate。您可以直接将源代码复制到您的项目中以避免添加依赖项。
之前
#[derive(Asset, TypePath)]
struct MyAsset;
#[derive(Resource, Deref)]
struct MySingleton(Handle<MyAsset>);
fn my_system(my_assets: Res<Assets<MyAsset>>, my_singleton: Res<MySingleton>) {
// Return if the asset doesn't exist
let Some(my_asset) = my_assets.get(&**my_singleton) else {
return;
};
// or panic
let my_asset = my_assets.get(&**my_singleton).unwrap();
}
之后
#[derive(Asset, TypePath)]
struct MyAsset;
// Your resource. Add it to the world yourself.
#[derive(Resource, Deref)]
struct MySingleton(Handle<MyAsset>);
// `AssetSingleton` is this crate's `SystemParam`. This type definition can help reduce boilerplate
// a bit, but it's optional. There's also `AssetSingletonMut`.
type MySingletonParam<'w> = AssetSingleton<'w, MySingleton>;
fn my_system(my_singleton: MySingletonParam) {
// Return if the asset doesn't exist
let Some(my_asset) = my_singleton.get() else {
return;
};
// or panic
let my_asset = my_singleton.unwrap();
// `AssetSingletonMut` has `get_mut` and `unwrap_mut`
}
用法
添加到您的 Cargo.toml
# Replace * with your desired version
[dependencies]
seldom_singleton = "*"
兼容性
Bevy | seldom_singleton |
---|---|
0.14 | 0.2 |
0.13 | 0.1 |
许可
seldom_singleton
可以选择在MIT和Apache 2.0下双许可。
贡献
除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可定义,将按上述方式双许可,不附加任何额外条款或条件。
依赖
~22–56MB
~1M SLoC