Files
XCEngine/docs/api/XCEngine/Scripting/ScriptEngine/OnScriptComponentClassChanged.md

38 lines
1.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ScriptEngine::OnScriptComponentClassChanged
**命名空间**: `XCEngine::Scripting`
**类型**: `method`
**头文件**: `XCEngine/Scripting/ScriptEngine.h`
## 签名
```cpp
void OnScriptComponentClassChanged(ScriptComponent* component);
```
## 作用
处理脚本组件在运行时中的类绑定变化。
## 当前实现流程
1. 忽略空指针。
2. 如果运行时未启动,直接返回。
3. 若该组件当前已被跟踪,则先执行 `StopTrackingScript(..., false)`
- 如有实例,会触发 `OnDisable -> OnDestroy -> DestroyScriptInstance`
- 然后从跟踪表移除
4. 如果组件已经没有脚本类,流程结束。
5. 否则按新类重新 `TrackScriptComponent()`
6. 若新状态满足 `ShouldScriptRun()`,立即 `EnsureScriptReady(..., true)`,从而创建新实例并触发 `Awake / OnEnable`
## 使用场景
`ScriptComponent::SetScriptClass()` 在已绑定类发生变化时会调用这里;`ClearScriptClass()` 也会走同一条停机路径。
## 相关文档
- [OnScriptComponentEnabled](OnScriptComponentEnabled.md)
- [ScriptComponent::SetScriptClass](../ScriptComponent/SetScriptClass.md)