7 个版本
0.2.1 | 2023 年 5 月 13 日 |
---|---|
0.2.0 | 2023 年 5 月 13 日 |
0.1.4 | 2023 年 5 月 13 日 |
#24 在 #game-assets
66 每月下载量
19KB
224 行
mini_asset_loader
mini_asset_loader
提供了一个可扩展的资源加载系统,旨在从各种来源加载资源以供游戏使用。
资源类型、加载源、缓存行为等完全可定制。资源是引用计数的,且线程安全。
在 asset
模块中提供了一个基于 serde_json
和类型标签的简单资源类型。
示例
此示例使用了 asset
功能。此功能提供了一个简单的标记 JSON 资源类型,仅在 nightly rust 上工作。但是,将其替换为自定义资源类型将在 stable rust 上工作。
use serde::{Serialize, Deserialize};
use mini_asset_loader::asset::{TaggedJsonAsset, TaggedJsonAssetCreationHandler};
use mini_asset_loader::loaders::ToCached;
use mini_asset_loader::{TypedAssetLoader, asset_loader_vec};
use std::path::PathBuf;
// Creating an asset type is as easy as making a Serializable/Deserializable struct...
#[derive(Serialize, Deserialize)]
struct StringAsset {
value: String
}
// ...and then tagging it with these two lines:
#[typetag::serde]
impl TaggedJsonAsset for StringAsset {}
// ...Then, when we want to *load* assets...
fn main() {
// We create our loader setup as usual...
let mut loader = asset_loader_vec![
PathBuf::from("assets/"),
PathBuf::from("/global_assets/")
].to_cached();
// Make a TaggedJsonAssetCreationHandler...
let mut handler = TaggedJsonAssetCreationHandler;
// And we can load our assets!
if let Some(my_string_asset) = loader.load_typed_asset::<StringAsset>(&mut handler, "my_string_asset.json") {
println!("String asset loaded: {}", my_string_asset.read().value);
}
}
依赖关系
~0–1.1MB
~20K SLoC