问题描述
我有一个Entity
和一个Bundle
的一个Components
,我想附加到一个实体,该实体将成为第一个实体的子代。我可以使用Commands
来生成带有其组件的实体,但是我无法获得实际的Entity
,这意味着我不能直接构造Children
组件。如果我使用World
资源并使系统线程本地化,则可以在生成它的子实体时获取我的子实体的Entity
,然后使用它来构成Child
组件,并将其添加到第一个实体。我无法使线程本地系统正常工作,它们似乎对于应该是一个简单而通用的操作来说过于矫kill过正。
需要澄清的是,这是我理想的语法:
fn add_children(mut commands: Commands,entity: &Entity) {
commands.add_children(*entity,ComponentBundle::default());
// maybe also
commands.add_child(*entity,Component::default());
}
解决方法
我找到了答案。您首先使用commands.spawn(...)
生成实体,然后使用commands.current_entity().unwrap()
抓取该实体(如果失败则不知道怎么办),然后commands.push_children(entity,&[children])
添加子代。