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

41 lines
1.0 KiB
Markdown
Raw Normal View History

2026-03-26 16:45:24 +08:00
# GameObject::SetActive
2026-04-03 16:11:48 +08:00
设置对象自身的 `activeSelf` 状态,并在必要时重新传播层级有效激活态。
2026-03-26 16:45:24 +08:00
```cpp
void SetActive(bool active);
```
2026-04-03 16:11:48 +08:00
## 行为说明
2026-03-26 16:45:24 +08:00
2026-04-03 16:11:48 +08:00
当前实现会先比较新旧 `m_activeSelf`
2026-03-26 16:45:24 +08:00
2026-04-03 16:11:48 +08:00
- 如果值没有变化,直接返回
- 如果值变化,重新计算对象当前的 `active in hierarchy`
2026-03-26 16:45:24 +08:00
2026-04-03 16:11:48 +08:00
当“层级有效激活态”发生变化时,当前实现会:
2026-03-26 16:45:24 +08:00
2026-04-03 16:11:48 +08:00
- 对已启用的普通组件发送 `OnEnable()``OnDisable()`
- 把变化递归传播到子对象
2026-03-26 16:45:24 +08:00
2026-04-03 16:11:48 +08:00
## 重要边界
- 它改的是对象自己的 `activeSelf`,不是直接改父子层级
- 真正是否参与运行,还要结合 [IsActiveInHierarchy](IsActiveInHierarchy.md) 判断
- `TransformComponent` 不参与普通组件遍历,因此不会在这里收到 `OnEnable()` / `OnDisable()`
## 参数
- `active` - 新的 `activeSelf` 值。
## 返回值
- 无。
2026-03-26 16:45:24 +08:00
## 相关文档
2026-04-03 16:11:48 +08:00
- [GameObject](GameObject.md)
- [IsActive](IsActive.md)
- [IsActiveInHierarchy](IsActiveInHierarchy.md)
- [SetParent](SetParent.md)