是否可以在不直接通过线程本地系统使用 World 的情况下向实体添加一个或多个子对象?

Is it possible to add a child or children to an entity without using the World directly with a thread-local system?

我有一个 Entity 和一个 ComponentsBundle,我想附加到一个实体,该实体将成为第一个实体的子实体。我可以使用 Commands 用我的组件生成一个实体,但我无法得到它实际的 Entity,这意味着我不能直接构建 Children 组件。如果我使用 World 资源并使我的系统线程本地化,我可以在生成子实体时获取它的 Entity,然后使用它来制作 Child 组件,并将其添加到第一个实体。我无法让线程本地系统工作,而且它们似乎对于应该是简单和常见的操作来说有点过分了。

有什么方法可以使用常规系统将子实体添加到另一个实体?

澄清一下,我的理想语法是这样的:

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]) 添加子项。