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

33 lines
1003 B
Markdown

# GameObject::GetComponents
返回当前对象自身上的全部匹配组件。
该方法当前提供两个公开重载:
```cpp
template<typename T> std::vector<T*> GetComponents();
template<typename T> std::vector<const T*> GetComponents() const;
```
## 收集顺序
两个重载的收集顺序一致:
1. 先尝试把内建 `m_transform` `dynamic_cast``T`
2. 若命中,则先把它加入结果
3. 再按 `m_components` 当前顺序,把所有匹配普通组件追加到结果
## 当前语义边界
- 只收集当前对象自身,不递归父节点或子节点
- `TransformComponent` 即使不在 `m_components` 中,只要类型匹配也会出现在结果里
- 结果顺序受普通组件添加顺序影响
`tests/Components/test_game_object.cpp` 中的 `GetComponents_Multiple` 已验证多个同类型普通组件会全部被返回。
## 相关文档
- [GetComponent](GetComponent.md)
- [GetComponentsInChildren](GetComponentsInChildren.md)
- [GetTransform](GetTransform.md)