2026-03-26 16:45:24 +08:00
|
|
|
# GameObject::Start
|
|
|
|
|
|
2026-04-03 16:11:48 +08:00
|
|
|
向当前对象及其子树分发一次性的 `Start()` 阶段。
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
void Start();
|
|
|
|
|
```
|
|
|
|
|
|
2026-04-03 16:11:48 +08:00
|
|
|
## 行为说明
|
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
|
|
|
1. 若对象不处于 `active in hierarchy`,直接返回
|
|
|
|
|
2. 若对象尚未 `m_started`
|
|
|
|
|
- 对所有已启用普通组件调用 `Start()`
|
|
|
|
|
- 把 `m_started` 置为 `true`
|
|
|
|
|
3. 无论当前对象是否第一次启动,都会继续递归对子对象调用 `Start()`
|
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
|
|
|
- 每个对象自己的 `Start()` 只会自动执行一次
|
|
|
|
|
- 子对象也通过这个递归链进入 `Start()`
|
|
|
|
|
- 运行时后加的组件不会因为对象已启动过而自动补发 `Start()`
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
2026-04-03 16:11:48 +08:00
|
|
|
- [Awake](Awake.md)
|
|
|
|
|
- [Update](Update.md)
|
|
|
|
|
- [IsActiveInHierarchy](IsActiveInHierarchy.md)
|