Files
XCEngine/docs/api/XCEngine/Editor/Application/ReloadScriptingRuntime.md

2.7 KiB
Raw Blame History

Application::ReloadScriptingRuntime

重新从当前项目的 Library/ScriptAssemblies 装载 Editor 脚本运行时。

bool ReloadScriptingRuntime();

前置条件

  • Application 已经持有有效 EditorContext
  • EditorContext::GetProjectPath() 非空

如果当前还没有完成初始化,或者项目路径为空,当前实现会直接返回 false

当前行为

ReloadScriptingRuntime() 本身很薄,它做的事情只有两步:

  1. 读取当前 project path
  2. 调用内部 InitializeScriptingRuntime(projectPath)

真正的工作都在 InitializeScriptingRuntime(...) 里完成,而那个内部流程会先执行一次 ShutdownScriptingRuntime()。因此这不是“在旧 runtime 上增量刷新”,而是一次完整的“先卸下,再重新探测和装载”的重建过程。

返回值语义

当前返回值直接等于:

m_scriptRuntimeStatus.runtimeLoaded

也就是说:

  • 成功装载 MonoScriptRuntime 并注册到 ScriptEngine 时返回 true
  • 只要最终没有可用 runtime就返回 false

失败路径

程序集缺失

如果当前项目的以下文件缺少任意一个:

  • Library/ScriptAssemblies/XCEngine.ScriptCore.dll
  • Library/ScriptAssemblies/GameScripts.dll
  • Library/ScriptAssemblies/mscorlib.dll

当前实现会:

  1. 清掉旧 runtime
  2. assemblyDirectory 写入状态
  3. backendEnabled = true
  4. assembliesFound = false
  5. 写入“程序集未找到”提示消息
  6. ScriptEngine runtime 设为 nullptr

结果是编辑器继续可用,但脚本类发现与脚本字段编辑会退化。

Mono 后端未启用

如果当前构建没有启用 XCENGINE_ENABLE_MONO_SCRIPTING

  • backendEnabled = false
  • runtimeLoaded = false
  • statusMessage 会说明该 editor build 不包含 Mono scripting support
  • 返回 false

runtime 初始化失败

如果程序集存在,但 MonoScriptRuntime::Initialize() 失败:

  • 旧 runtime 已经被清掉
  • statusMessage 会保存底层错误文本
  • ScriptEngine 仍然保持 nullptr
  • 返回 false

调用方影响

这个方法的结果不会直接弹出错误框,而是通过 EditorScriptRuntimeStatus 暴露给上层 UI。当前主要消费方包括

  • ScriptComponentEditor
  • ScriptComponentEditorUtils

它们会据此决定是否显示 Reload Scripts / Rebuild Scripts 按钮,以及当前应展示什么提示文本。

相关文档