返回实战操作门户
Phase 01 / Startup & Loading

启动:环境建立

全量实现路径、物理原理与操作规程

01 / 环节异步总图
            sequenceDiagram
                participant GT as Game Thread
                participant PL as Plugin Layer
                participant K as Kernel (DLL)
                
                GT->>PL: 发起 LoadModel (多种路径)
                Note right of PL: 进入后台 AsyncTask
                PL->>K: 物理 mmap 映射
                K->>K: 执行 GPU 显存预分配
                K-->>PL: 返回引擎句柄 (Handle)
                PL-->>GT: 广播 OnModelLoaded 信号
            
02 / 三种实现路径 (Implementation Paths)

方法 A:原生静态 API (最灵活)

适用于极致性能控,手动管理线程与生命周期。

// 手动异步拉起
AsyncTask(ENamedThreads::AnyBackgroundThreadNormalTask, [Config]() {
    FLiteRtLmUnrealApi::LoadModel(Config);
});

方法 B:子系统驱动 (推荐)

利用 ULiteRtLmSubsystem 提供的全局生命周期管理。

// 通过全局单例加载,自动维护模型存续状态
ULiteRtLmSubsystem* Subsystem = GEngine->GetEngineSubsystem<ULiteRtLmSubsystem>();
Subsystem->LoadModel(MyConfig);

方法 C:组件自动初始化 (蓝图友好)

只需在 Actor 上挂载 ULiteRtLmComponent 并勾选 bAutoInit

// 内部逻辑:组件会在 BeginPlay 时自动去问子系统:模型加载了吗?没加载就顺便加载。
03 / 本阶段关联概念 (Concepts)
PHYSICSmmap 零拷贝映射

为什么加载 2GB 模型不卡?因为我们只是告诉 OS “文件在这”,只有计算触碰到权重时才执行物理搬运。

VRAM显存预算锁定

一旦启动,插件会物理预留 MaxNumTokens * 步长 大小的显存,确保对话过程中不会因显存动态增长而崩溃。