1个不稳定版本
0.1.0 | 2021年2月4日 |
---|
#46 in #资源
39KB
142 行
这是一个Bevy AssetIo实现,允许从可选加密的zip资产包中读取。使用bevy_assetio_zip_bundler
包,你还可以在build.rs
脚本中自动将你的资源打包成所需的格式。
使用方法
只需在设置Bevy应用程序时启用插件即可启用从资产包文件中加载。
App::build()
// Any config must be inserted before adding plugins. This is optional.
.add_resource(AssetIoZipConfig {
// The name of the asset bundle file, excluding the extension, to load
file_name: "assets".into(), // This is the default
})
// Add the default plugins
.add_plugins_with(DefaultPlugins, |group| {
// With our additinoal asset IO plugin
group.add_before::<bevy::asset::AssetPlugin, _>(AssetIoZipPlugin)
})
.run();
启用插件后,游戏现在在尝试加载资源时将搜索可执行文件旁边的assets.zip
和assets.bin
文件。如果zip文件中找不到资源,它将尝试使用目标平台默认的Bevy资源加载器加载资源。
资产包类型
此插件支持两种类型的资产包文件,普通的.zip
文件和加密的zip文件(扩展名为.bin
)。普通的.zip
文件是典型的zip文件,可以用普通的zip软件创建。加密的zip文件可以使用bevy_assetio_zip_bundler
创建,它只是一个经过字节XOR(0b01010101)处理的普通zip文件。
⚠️ 警告:加密的zip文件并不提供对您资源的真正安全或保护。即使它被加密,解密资产包也是微不足道的。zip的加密只是防止普通用户立即检查数据的措施。
资源打包
要打包您的Bevy资源,您可以使用bevy_assetio_zip_bundler
包。最简单的方法是将以下内容添加到您的build.rs
文件中
fn main() {
bevy_assetio_zip_bundler::bundle_crate_assets();
}
在编译发布版本时,此功能将自动将您的crate的assets
文件夹压缩,并将其放入您的target/
目录。在分发应用程序时,只需将您的资源包放置在可执行文件旁边,Bevy将尝试从包中加载资源,如果失败,则回退到assets
目录。
您可以通过在Cargo.toml
文件旁边创建一个asset_config.toml
文件来配置包的名称、混淆和压缩。
# Bundle assets even for debug builds
bundle-for-debug-builds = true # Default: false
# Obfuscate assets. This doesn't protect from reverse-engineering, but it makes it a little harder
# for the average user to read them.
obfuscate = true # Default: false
# Compress the asset bundle using Bzip2 compression. Other options are "deflate" and "none".
compression = "bzip2" # Default: "bzip2"
# The name of the file, not counting the exention, which will be different based on the `obfuscate`
# setting. Obfuscated bundles will end in `.bin` and non-obfuscated bundles will end in `.zip`.
file-name = "assets" # Default: "assets"
# Set the directory that asset bundle should be placed.
out-dir = "../target" # Default "./target"
或者,如果您想创建自己的工具或自定义资源打包过程,可以使用bevy_assetio_zip_bundler::bundle_assets
函数手动打包资源。
Bevy 版本
每个插件版本的Bevy支持版本
Bevy 版本 | 插件版本 |
---|---|
0.4 | 0.1 |
master | 0.1,具有bevy-unstable 特性(见下文) |
使用Bevy master
您可以通过向Cargo.toml
添加补丁,并为此crate添加bevy-unstable
特性,使用此crate与Bevy master一起使用
[dependencies]
# Bevy version must be set to "0.4" and we will
# override it in the patch below.
bevy = "0.4"
bevy_assetio_zip = { version = "0.1", features = ["bevy-unstable"] }
[patch.crates-io]
bevy = { git = "https://github.com/bevyengine/bevy.git" }
请注意,由于Bevy master可能会或可能不会引入破坏性API更改,此crate在使用bevy-unstable
特性时可能无法编译。
许可证
此crate根据Katharos许可证许可,该许可证对您可以使用它的目的施加某些限制。在使用此crate用于您的项目之前,请阅读并理解条款。
依赖项
~17–27MB
~401K SLoC