Files
XCEngine/docs/api/XCEngine/Scripting/ScriptComponent/ClearScriptClass.md

1.7 KiB

ScriptComponent::ClearScriptClass

命名空间: XCEngine::Scripting

类型: method

头文件: XCEngine/Scripting/ScriptComponent.h

签名

void ClearScriptClass();

作用

清空当前脚本组件的命名空间和类名绑定。

当前实现行为

  • 内部等价于调用 SetScriptClass(m_assemblyName, "", "")
  • 当前 assemblyName 会被保留。
  • namespaceNameclassName 会被清空,因此 HasScriptClass() 立刻变成 false
  • 如果运行时正在运行且该组件原本已有脚本类,ScriptEngine 会收到类变化通知,并销毁旧跟踪实例。

当前这条链路的实际停机顺序仍然是:

  1. OnDisable
  2. OnDestroy
  3. DestroyScriptInstance

但因为组件字段会先被清空再通知引擎,所以停机过程中如果原生侧读取 GetFullClassName(),当前看到的是空字符串。

设计含义

“清空绑定”不是单纯改两个字符串。对运行时来说,它意味着这个组件不再有可执行脚本类,应该停止继续调度生命周期。

同时还要注意两点:

  • ClearScriptClass() 不会重置 assemblyName
  • ClearScriptClass() 不会删除 ScriptFieldStorage 里的本地字段覆盖值。

这让脚本槽位可以被清空,但组件上的历史配置数据仍然保留在原生场景层里,便于后续重绑或调试。

真实行为依据

  • engine/src/Scripting/ScriptComponent.cpp
  • engine/src/Scripting/ScriptEngine.cpp
  • tests/Scripting/test_script_engine.cpp

相关文档