# MonoScriptRuntime::CreateScriptInstance **命名空间**: `XCEngine::Scripting` **类型**: `method` **头文件**: `XCEngine/Scripting/Mono/MonoScriptRuntime.h` ## 签名 ```cpp bool CreateScriptInstance( const ScriptRuntimeContext& context) override; ``` ## 当前实现流程 1. 若 `context.component` 为空,失败并记录错误。 2. 若该实例已存在,直接返回 `true`。 3. 若运行时尚未初始化,先调用 [Initialize](Initialize.md)。 4. 根据组件的程序集名、命名空间和类名查找类元数据;程序集名为空时回退到 `Settings::appAssemblyName`。 5. 在 app domain 中创建托管对象并执行默认构造。 6. 写入上下文字段:`gameObjectUUID` 与 `scriptComponentUUID`。 7. 把 `ScriptFieldStorage` 中能匹配上的字段写入托管对象。 8. 创建 `gcHandle` 并写入实例缓存。 ## 失败路径 类不存在、分配失败、上下文字段写入失败、存储字段应用失败时都会返回 `false` 并更新 `m_lastError`。 ## 相关文档 - [DestroyScriptInstance](DestroyScriptInstance.md) - [SyncManagedFieldsToStorage](SyncManagedFieldsToStorage.md)