#debug-mode #assets #game-assets #static #debugging #release #file-io

资源

用于在发布模式下静态包含资源,但在调试模式下动态加载它们的宏。这主要用于游戏,允许您在发布构建中避免文件I/O,同时在调试模式下动态重新加载资源。

5个版本 (3个破坏性变更)

0.5.0 2020年6月18日
0.4.0 2020年1月14日
0.3.0 2019年10月20日
0.2.1 2018年8月6日
0.2.0 2018年8月2日

#391文件系统

Download history 1066/week @ 2024-03-13 771/week @ 2024-03-20 566/week @ 2024-03-27 915/week @ 2024-04-03 748/week @ 2024-04-10 695/week @ 2024-04-17 567/week @ 2024-04-24 1584/week @ 2024-05-01 969/week @ 2024-05-08 675/week @ 2024-05-15 1103/week @ 2024-05-22 1005/week @ 2024-05-29 609/week @ 2024-06-05 739/week @ 2024-06-12 724/week @ 2024-06-19 1067/week @ 2024-06-26

每月3,231次下载
12 个Crates中使用 (9直接使用)

CC0 协议

28KB
572

resource

Build Status Crates.io Docs.rs

“resource”Crates包含用于在发布模式下静态包含资源,但在调试模式下动态加载它们的宏。

这主要用于游戏,允许您在发布构建中避免文件I/O,同时在调试模式下动态重新加载资源。

您可以通过使用force-staticforce-dynamic特性来更改默认行为,无论是调试模式还是发布模式。

当资源被静态包含时,它们在内存中是常量,并包含在最终的二进制可执行文件中。这允许您避免将单个文件与发布应用程序一起打包。

当资源被动态包含时,它们在运行时从文件中加载,因此可以在应用程序运行时切换和更新。

用法

[dependencies]
resource = "~0.4.0"

基本用法

use resource::{resource, resource_str};

let text = resource_str!("assets/text_asset.txt");
println!("Text is: {}", text);

let bytes = resource!("assets/binary_asset.bin");
println!("Binary data is: {:?}", bytes);

let (a, b, c) = resource_str!(("a.txt", "b.txt", "c.txt"));
println!("Contents of the three files are: `{}`, `{}`, `{}`");

let decoded_images = resource!(["a.png", "b.png", "c.png"], |image: &[u8]| decode(image));

重新加载

use resource::resource_str;

let mut message = resource_str!("message.txt");

loop {
    println!("Hello: {}", message.as_ref());

    // Wait one second
    std::thread::sleep(std::time::Duration::from_secs(5));

    // You can edit the contents of message.txt

    // Reload the message so the new version is printed next iteration
    message.reload_if_changed();
}

依赖项

~14KB