3个版本 (破坏性更新)
0.3.0 | 2024年7月5日 |
---|---|
0.2.0 | 2024年4月22日 |
0.1.0 | 2024年4月20日 |
#543 in 游戏开发
17KB
98 行
bevy_dyn_component
用法
将 dynamic_components_plugin
添加到您的 App
use bevy_dyn_component::prelude::*;
...
app.add_plugins(dynamic_components_plugin);
这将初始化一些不安全部分所需的组件类型注册表。之后,您可以使用 dynamic_component
和 insert_dynamic
API
#[derive(Component)]
struct DynamicMarker;
let marker0 = world.dynamic_component::<DynamicMarker>();
world.entity_mut(e).insert_dynamic(marker0, DynamicMarker);
组件ID也可以在查询构建器API中使用。
此包的未来
现在,由于Bevy支持动态组件,这个包可能很快就会过时。从长远来看,您可以用这个包完成许多事情,但使用 关系 来做可能会更简单。
示例
hello_world
展示了如何使用该库的基本用法,如何创建与现有组件匹配布局的动态组件,如何将它们插入实体,以及如何在查询构建器API中使用它们。
relations_at_home
展示了使用动态组件作为碎片化关系的一种简单方法。它处理已销毁的关系目标的清理工作,因此当关系目标不多时可能很有用。重要的是,没有像第一方关系功能那样的垃圾收集,因此随着额外关系目标的增加,架构计数将增加。最后,查询相关实体很痛苦,没有查询“沿”关系的支持,因此唯一的优势是自动清理。
Bevy版本
bevy | bevy_dyn_component |
---|---|
0.13 | 0.1-0.2 |
0.14 | 0.3 |
贡献
欢迎PR。如果Bevy不久不提供一流的支持,我可能会继续更新这个。它缺少一些API,例如,take_dynamic
。我可能不会添加这个,直到我在项目中需要它,但如果有其他人想处理它,我也不会犹豫。
依赖关系
~11MB
~193K SLoC