4个版本

0.2.0 2023年11月10日
0.1.2 2023年10月22日
0.1.1 2023年10月22日
0.1.0 2023年10月22日

2224游戏开发

每月25次下载

MIT许可证

29KB
222

Bevy UI 3D

此库提供了一种简单的方法来标记游戏对象为UI元素。然后您可以对这些元素编写UI交互查询。

Bevy兼容性

Bevy版本 bevy_ui_3d版本
^0.11.3 ^0.1.0
^0.12.0 ^0.2.0

示例

您可以在示例文件夹中查看此crate的实际用法,但为了开始,您可以在设置应用程序和场景时执行以下操作

use bevy::prelude::*;
use bevy_rapier3d::prelude::*;
use bevy_ui_3d::{Interaction3d, Ui3dElementBundle, Ui3dPlugin};

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(Ui3dPlugin::default())
        .add_startup_system(setup)
        .run();
}

fn setup(mut commands: Commands) {
    // ... other setup code

    // add a 3d gameobject with UI interactions
    commands.spawn((
        PbrBundle {
            mesh: meshes.add(Mesh::from(shape::Cube { size: 1.0 })),
            material: materials.add(Color::rgb(0.8, 0.7, 0.6).into()),
            transform: Transform::from_xyz(0.0, 0.5, 0.0),
            ..default()
        },
        Ui3dElementBundle {
            // the collider is needed, since the interaction is detected via raycasting
            collider: Collider::cuboid(0.5, 0.5, 0.5),
            ..default()
        },
    ));
}

配置插件

此插件附带一些配置选项,您可以在启动时设置,因为您可能对所有交互类型不感兴趣,太多的交互可能会很嘈杂。

use bevy::prelude::*;
use bevy_rapier3d::prelude::*;
use bevy_ui_3d::{Interaction3d, Ui3dElementBundle, Ui3dPlugin, PluginConfig};

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(Ui3dPlugin {
            config: PluginConfig {
                hover_enabled: false,
                hover_point_enabled: false,
                press_enabled: true,
                press_point_enabled: false,
            }
        })
        .add_startup_system(setup)
        .run();
}

依赖关系

~31MB
~569K SLoC