Files
XCEngine/docs/api/XCEngine/Scripting/ScriptEngine/TryGetAvailableScriptClasses.md

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;

作用

返回当前运行时可绑定的脚本类列表,并可按程序集过滤。

当前实现流程

  1. 清空 outClasses
  2. 调用当前运行时的 TryGetAvailableScriptClasses(runtimeClasses)
  3. 如果运行时返回 false,直接返回 false
  4. 若传入了 assemblyName,只保留匹配该程序集的条目。
  5. 过滤掉 className 为空的无效描述。
  6. assemblyName -> namespaceName -> className 排序。
  7. 返回 true

关键语义

  • 这个方法消费的是“运行时已经发现好的类列表”,不会在这里重新扫描程序集,也不会为结果做实例创建验证。
  • 如果运行时能提供列表,但过滤后一个类都不剩,当前仍返回 true,只是 outClasses 为空。
  • 这一步的排序是给 Inspector / 脚本类选择 UI 做稳定输出用的;调用方不需要再按自己的规则重排一遍。
  • 当前 MonoScriptRuntime 本身也会返回排序后的列表,但 ScriptEngine 仍然会再做一层规范化,这样换后端时对上层 UI 的输出形态更稳定。

返回值语义

  • 返回 true: 运行时支持类发现,排序 / 过滤后的结果可用。
  • 返回 false: 运行时不支持,或当前不能返回类列表。

典型用途

  • Inspector 中的脚本类下拉列表。
  • 运行时或编辑器中的脚本类过滤器。
  • 需要显示 Namespace.Class 稳定排序结果的调试面板。

真实行为依据

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

相关文档