Files
XCEngine/docs/api/XCEngine/Components/GameObject/DetachChildren.md

907 B

GameObject::DetachChildren

把当前对象的所有直接子对象全部分离出去,并保持它们的世界空间变换。

void DetachChildren();

行为说明

当前实现会先复制一份 m_children,然后对副本中的每个子对象调用:

child->SetParent(nullptr, true);

这么做的目的,是避免在遍历过程中直接修改原始 m_children 容器导致迭代失效。

结果语义

调用完成后:

  • 当前对象的直接子列表会被清空
  • 每个原子对象都会变成根对象,或在无场景时变成无父独立对象
  • 每个子对象都会尽量保持原世界空间变换

tests/Components/test_game_object.cpp 中的 DetachChildren 已验证父对象的 GetChildCount() 会从原值变成 0

相关文档