13个版本 (8个破坏性版本)

0.10.0 2023年3月6日
0.9.1 2022年11月13日
0.8.0 2022年7月30日
0.6.0 2022年1月9日
0.3.0 2020年11月4日

#2260 in 游戏开发

Download history 26/week @ 2024-03-11 20/week @ 2024-03-18 4/week @ 2024-03-25 77/week @ 2024-04-01 13/week @ 2024-04-08 16/week @ 2024-04-15 23/week @ 2024-04-22 36/week @ 2024-04-29 36/week @ 2024-05-06 22/week @ 2024-05-13 37/week @ 2024-05-20 34/week @ 2024-05-27 48/week @ 2024-06-03 14/week @ 2024-06-10 20/week @ 2024-06-17 24/week @ 2024-06-24

110 个月下载量
2 个包中使用 (通过 bevy_progress_bar)

MIT/Apache

27KB
420

Bevy 9-Patch插件

MIT/Apache 2.0 Doc Crate Bevy Tracking CI

在Bevy中实现9-Patch图像。让您可以只缩放图像的正确部分。

9 patch example

查看示例了解可以实现什么。

简单用法

添加 NinePatchPlugin 插件后,通过具有 NinePatchBundle 组件的 Entity 添加一个9-Patch UI元素。

基于Godot的 NinePatchRect 提供了一个简单的构建器。

use bevy::prelude::*;
use bevy_ninepatch::*;

fn setup(
    mut commands: Commands,
    asset_server: Res<AssetServer>,
    mut nine_patches: ResMut<Assets<NinePatchBuilder<()>>>,
) {
    // Texture for the base image
    let panel_texture_handle = asset_server.load("assets/glassPanel_corners.png");

    // Create a basic 9-Patch UI element with margins of 20 pixels
    let nine_patch_handle = nine_patches.add(NinePatchBuilder::by_margins(20, 20, 20, 20));

    // This entity will be placed in the center of the 9-Patch UI element
    let content_entity = commands.spawn(TextBundle { ..Default::default() }).id();

    commands.spawn(
        NinePatchBundle {
            style: Style {
                margin: UiRect::all(Val::Auto),
                justify_content: JustifyContent::Center,
                align_items: AlignItems::Center,
                size: Size::new(Val::Px(500.), Val::Px(300.)),
                ..Default::default()
            },
            nine_patch_data: NinePatchData::with_single_content(
                panel_texture_handle,
                nine_patch_handle,
                content_entity,
            ),
            ..Default::default()
        },
    );
}

查看plugin.rs示例以获取完整示例。

更改元素大小

可以通过更改 size 属性来更改 Style 组件,以更新9-Patch UI元素的大小。

查看change_size.rs示例以获取完整示例。

指定要使用的内容

您可以使用 NinePatchContent 组件指定9-Patch UI元素内部要使用的内容。通过指定边距创建9-Patch时,默认情况下,中心区域将可用作为9-Patch UI元素的内容区域。

查看multi_content.rs示例以获取完整示例。

更灵活的定义

可以为图像设置任意数量的补丁,唯一限制是同一行中的所有补丁必须具有相同的高度。使用此方法,图像的不同部分可以以不同的速率增长,并可以创建多个内容区域。

查看full.rs示例以获取完整示例。

Bevy兼容性

Bevy bevy_ninepatch
main main
0.10 0.10
0.9 0.9
0.8 0.8
0.7 0.7
0.6 0.6
0.5 0.5

依赖关系

~41–76MB
~1M SLoC