#sprite-sheet #texture-atlas #texture #bevy #atlas #gamedev

bevy_mod_spritesheet

从常见的精灵图集格式创建TextureAtlasLayouts

3个版本 (破坏性)

0.3.0 2024年7月17日
0.2.0 2024年5月18日
0.1.0 2024年4月2日

游戏开发中排名第353

Download history 163/week @ 2024-05-13 26/week @ 2024-05-20 3/week @ 2024-06-03 7/week @ 2024-07-01 118/week @ 2024-07-15 1/week @ 2024-07-22 31/week @ 2024-07-29

每月下载156

MIT许可

37KB
370

Bevy的精灵图集格式

crates.io docs.rs

从精灵图集格式创建Bevy TextureAtlasLayout

⚠️ 这仍然是一个正在进行中的项目,预计每个小版本都会有破坏性更改 ⚠️

概述

要在Bevy中使用精灵图集,你必须创建一个 TextureAtlasLayout,如果精灵以网格形式存在并且大小相等,那么设置起来相当简单(见示例),但精灵图集的形状和大小各不相同,通常更复杂。

虽然你可以自己设置纹理图集,但很可能是所有精灵及其位置都定义在一个伴随的元数据文件中。

该软件包的核心功能是允许你使用元数据文件为你构建一个 TextureAtlasLayout

亮点

  • 支持的格式
    • JSON数组
    • JSON哈希
  • 使用名为frame的组件(在实体上)来选择精灵图集中的精灵
  • 如果精灵图集格式支持,则自动加载纹理。

入门

  1. SpriteSheetPlugin 添加到您的应用程序中。
use bevy_mod_spritesheet::SpriteSheetPlugin;
...
app.add_plugins(SpriteSheetPlugin)
...
  1. 使用 Res<AssetServer>load 精灵图集文件和相应的纹理,并将句柄插入实体,包括 Frame 组件和一个Bevy SpriteBundle

⚠️ 默认情况下,自动纹理加载是关闭的。如果想要启用它,请添加 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,
    },
));

  1. 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