1.7 KiB
1.7 KiB
ScriptComponent::ClearScriptClass
命名空间: XCEngine::Scripting
类型: method
头文件: XCEngine/Scripting/ScriptComponent.h
签名
void ClearScriptClass();
作用
清空当前脚本组件的命名空间和类名绑定。
当前实现行为
- 内部等价于调用
SetScriptClass(m_assemblyName, "", "")。 - 当前
assemblyName会被保留。 namespaceName和className会被清空,因此HasScriptClass()立刻变成false。- 如果运行时正在运行且该组件原本已有脚本类,
ScriptEngine会收到类变化通知,并销毁旧跟踪实例。
当前这条链路的实际停机顺序仍然是:
OnDisableOnDestroyDestroyScriptInstance
但因为组件字段会先被清空再通知引擎,所以停机过程中如果原生侧读取 GetFullClassName(),当前看到的是空字符串。
设计含义
“清空绑定”不是单纯改两个字符串。对运行时来说,它意味着这个组件不再有可执行脚本类,应该停止继续调度生命周期。
同时还要注意两点:
ClearScriptClass()不会重置assemblyName。ClearScriptClass()不会删除 ScriptFieldStorage 里的本地字段覆盖值。
这让脚本槽位可以被清空,但组件上的历史配置数据仍然保留在原生场景层里,便于后续重绑或调试。
真实行为依据
engine/src/Scripting/ScriptComponent.cppengine/src/Scripting/ScriptEngine.cpptests/Scripting/test_script_engine.cpp