3个版本 (破坏性)
0.3.0 | 2024年7月17日 |
---|---|
0.2.0 | 2024年5月18日 |
0.1.0 | 2024年4月2日 |
在游戏开发中排名第353
每月下载156次
37KB
370 行
概述
要在Bevy中使用精灵图集,你必须创建一个 TextureAtlasLayout
,如果精灵以网格形式存在并且大小相等,那么设置起来相当简单(见示例),但精灵图集的形状和大小各不相同,通常更复杂。
虽然你可以自己设置纹理图集,但很可能是所有精灵及其位置都定义在一个伴随的元数据文件中。
该软件包的核心功能是允许你使用元数据文件为你构建一个 TextureAtlasLayout
。
亮点
- 支持的格式
- JSON数组
- JSON哈希
- 使用名为frame的组件(在实体上)来选择精灵图集中的精灵
- 如果精灵图集格式支持,则自动加载纹理。
入门
- 将
SpriteSheetPlugin
添加到您的应用程序中。
use bevy_mod_spritesheet::SpriteSheetPlugin;
...
app.add_plugins(SpriteSheetPlugin)
...
- 使用
Res<AssetServer>,
load
精灵图集文件和相应的纹理,并将句柄插入实体,包括Frame
组件和一个BevySpriteBundle
。
⚠️ 默认情况下,自动纹理加载是关闭的。如果想要启用它,请添加
SpriteSheetOptions
组件并将texture_loading
设置为true
use bevy_mod_spritesheet::{format::json::array::JsonArray, Frame, SpriteSheet, SpriteSheetBundle, SpriteSheetOptions, SpriteSheetPlugin};
let sprite_sheet: Handle<SpriteSheet<JsonArray>> = asset_server.load("gabe-idle-run.json");
let image: Handle<Image> = asset_server.load("gabe-idle-run.png");
commands.spawn((
SpriteBundle {
texture: image,
sprite: Sprite {
custom_size: Some(Vec2::splat(500.0)),
..default()
},
..default()
},
Frame::name("gabe-idle-run 6.png".into()),
sprite_sheet,
));
/// Using `bevy_mod_spritesheet::SpriteSheetBundle`
commands.spawn((
SpriteBundle {
sprite: Sprite {
custom_size: Some(Vec2::splat(500.0)),
..default()
},
..default()
},
SpriteSheetBundle {
frame: Frame::name("gabe-idle-run 6.png".into()),
options: SpriteSheetOptions {
texture_loading: true,
},
sprite_sheet,
},
));
Handle<TextureAtlasLayout>
和TextureAtlas
将在后台创建并插入实体。如果精灵无法正确渲染,请检查控制台中的错误消息。
示例
查看examples
文件夹以获取使用示例。
支持的Bevy版本
bevy |
bevy_mod_spritesheet |
---|---|
0.14 | 0.3, main |
0.13 | 0.2 |
0.13 | 0.1 |
依赖项
~35–72MB
~1M SLoC