2.0 KiB
2.0 KiB
ScriptEngine::TryGetAvailableScriptClasses
命名空间: XCEngine::Scripting
类型: method
头文件: XCEngine/Scripting/ScriptEngine.h
签名
bool TryGetAvailableScriptClasses(
std::vector<ScriptClassDescriptor>& outClasses,
const std::string& assemblyName = std::string()) const;
作用
返回当前运行时可绑定的脚本类列表,并可按程序集过滤。
当前实现流程
- 清空
outClasses。 - 调用当前运行时的
TryGetAvailableScriptClasses(runtimeClasses)。 - 如果运行时返回
false,直接返回false。 - 若传入了
assemblyName,只保留匹配该程序集的条目。 - 过滤掉
className为空的无效描述。 - 按
assemblyName -> namespaceName -> className排序。 - 返回
true。
关键语义
- 这个方法消费的是“运行时已经发现好的类列表”,不会在这里重新扫描程序集,也不会为结果做实例创建验证。
- 如果运行时能提供列表,但过滤后一个类都不剩,当前仍返回
true,只是outClasses为空。 - 这一步的排序是给 Inspector / 脚本类选择 UI 做稳定输出用的;调用方不需要再按自己的规则重排一遍。
- 当前
MonoScriptRuntime本身也会返回排序后的列表,但ScriptEngine仍然会再做一层规范化,这样换后端时对上层 UI 的输出形态更稳定。
返回值语义
- 返回
true: 运行时支持类发现,排序 / 过滤后的结果可用。 - 返回
false: 运行时不支持,或当前不能返回类列表。
典型用途
- Inspector 中的脚本类下拉列表。
- 运行时或编辑器中的脚本类过滤器。
- 需要显示
Namespace.Class稳定排序结果的调试面板。
真实行为依据
engine/src/Scripting/ScriptEngine.cpptests/Scripting/test_script_engine.cpp