#bevy-ui #bevy #ui #texture #graphics #texture-atlas #game

bevy_ui_exact_image

Bevy UI图像小部件,可以更精确地控制图像的大小和方向

4个版本

0.2.1 2023年2月17日
0.2.0 2023年2月1日
0.1.1 2023年1月31日
0.1.0 2023年1月31日

#20 in #texture-atlas

每月22次下载

MIT/Apache

64KB
387 代码行

bevy_ui_exact_image

crates.io MIT/Apache 2.0 crates.io

  • 强制Bevy UI以任何你想要的大小绘制图像。
  • 保持图像的宽高比,无论UI布局如何。
  • 完全支持纹理图集图像。
  • 图像旋转。

image image image

使用方法

将依赖项添加到你的Bevy项目中

cargo add bevy_ui_exact_image

然后在Bevy UI节点中绘制一个有尺寸的图像

use bevy::prelude::*;
use bevy_ui_exact_image::prelude::*;

fn spawn_example(mut commands: Commands, assets: Res<AssetServer>) {
    commands.spawn(Camera2dBundle::default());
    commands.spawn((ExactImageBundle {
        image: ExactImage {
            texture: assets.load("orientation.png"),
            // exact images have their own color, independent from the background color.
            color: Color::WHITE,
            // force the UI to display the texture at 300 x 200 size
            size: ExactSize::Exactly(Vec2::new(300., 200.)),
            // align the image to the bottom edge of the node, in the center.
            alignment: ImageAlignment::BottomCenter,
            // use Some(rads) to set rotation
            rotation: None,
        },
        style: Style {
            size: Size::new(Val::Px(400.0), Val::Px(400.0)),
            ..Default::default()
        },
        /// give the containing node a red color
        background_color: BackgroundColor(Color::RED),
        ..Default::default()
    },));
}

fn main() {
    App::new()
        .add_plugins(DefaultPlugins.set(ImagePlugin::default_nearest()))
        .add_plugin(ExactImagePlugin)
        .add_startup_system(spawn_example)
        .run();
}

结果

image

示例

cargo --run --example minimal
cargo --run --example rotation
cargo --run --example size
cargo --run --example alignment

限制

  • 没有图像翻转。在目前的Bevy 0.9中,无法实现(至少不是简单可行)。

注意

依赖

~18–34MB
~523K SLoC