#default #bevy-ecs #impl #bundle #fields #macro #ldtk

已删除 bevy_ecs_ldtk_default

为 bevy_ecs_ldtk 实现宏,使用 bundle 的 Default 实现,而不是它的字段'。

1 个不稳定版本

0.1.1 2023年8月18日
0.1.0 2023年8月18日

#13#ldtk

MIT/Apache

7KB

bevy_ecs_ldtk_default

为 bevy_ecs_ldtk 实现宏,使用 bundle 的 Default 实现,而不是它的字段'。

用法

use bevy::prelude::*;
use bevy_rapier2d::prelude::*;
use bevy_ecs_ldtk::prelude::*;
use bevy_ecs_ldtk_default::*;

// Derive LdtkEntityDefault or LdtkIntCellDefault to make
// `bevy_ecs_ldtk` make use of your bundle's `Default` `impl`,
// instead of individual `Default` `impl`s of each of it's fields.

#[derive(Bundle, LdtkEntityDefault)]
pub struct PlayerBundle {
    rigid_body: RigidBody,
}

impl Default for PlayerBundle {
    fn default() -> Self {
        // `PlayerBundle` now will spawn with kinematic rigid body.
        Self { rigid_body: RigidBody::KinematicPositionBased }

        // If we would've not used `LdtkEntityDefault` along with
        // this `impl Default`, our `PlayerBundle` would've spawned
        // with `rigid_body: RigidBody::Dynamic` (since that's what
        // `impl Default` of `RigidBody` provides) instead, which is
        // undesired.
    }
}

依赖

~290–750KB
~18K SLoC