1.6 KiB
1.6 KiB
MonoScriptRuntime::TryGetAvailableScriptClasses
命名空间: XCEngine::Scripting
类型: method
头文件: XCEngine/Scripting/Mono/MonoScriptRuntime.h
签名
bool TryGetAvailableScriptClasses(
std::vector<ScriptClassDescriptor>& outClasses) const override;
当前实现流程
- 清空
outClasses。 - 若运行时尚未初始化,直接返回
false。 - 遍历
m_classes缓存,把每个条目转换成ScriptClassDescriptor。 - 按
assemblyName -> namespaceName -> className排序后返回。
返回内容边界
- 只来自当前已发现的应用程序集脚本类缓存。
- 不包含抽象类。
- 不包含非
MonoBehaviour子类。 - 不会在这里重新加载程序集或重新做类型扫描;发现动作发生在
Initialize()期间。 - 当前写入到
descriptor.assemblyName的值来自m_settings.appAssemblyName。
为什么这个列表可以直接给 UI 用
当前实现已经在运行时层做了稳定排序,因此:
GetScriptClassNames()可以直接在此基础上再做一层字符串提取。ScriptEngine::TryGetAvailableScriptClasses()也只需要再补一层程序集过滤和空类名剔除。- Inspector 下拉框或脚本选择器不需要自己再去理解 Mono 反射细节。
真实行为依据
engine/src/Scripting/Mono/MonoScriptRuntime.cpptests/scripting/test_mono_script_runtime.cpptests/scripting/test_project_script_assembly.cpp