用途:当已存在训练好的模型,目标是在 Unity 内可靠运行推理时使用本技能。核心议题包括模型导入、后端选择、预热、推理节奏与平台安全部署。
适用场景:把 ONNX 模型导入 Unity 并在 Play 模式中推理;从旧 Sentis 命名迁移到当前 Unity AI Inference 包路径;在 GPUCompute、CPU 与回退方案之间选择;不依赖 Python 运行时执行 NPC 或玩法推理;分析模型开销并减少掉帧;把 ML-Agents 训练输出接入运行时部署。
要安装包并注意改名:当前 Sentis 文档说明 Sentis 已更名为 Inference Engine,最新指引转向 com.unity.ai.inference@latest;既有 Sentis 2.1.x 项目仍使用 Unity.Sentis API。在 Packages/manifest.json 中可声明 "com.unity.sentis": "2.1.3"。若项目已迁移到新包路径,聚焦运行时概念即可:导入模型、创建 Worker、调度执行、管理后端与平台约束。
基本用法:用 ModelLoader.Load 加载 ModelAsset,依据 SystemInfo.supportsComputeShaders 选择 BackendType.GPUCompute 或 BackendType.CPU,再用 new Worker(runtimeModel, backend) 创建 Worker,并在 OnDestroy 中释放。仅在无计算着色器但仍需 GPU 路径时使用 GPUPixel,优先 GPUCompute 或 CPU。
调度与预热:官方文档指出 Unity 编辑器内首次调度运行可能较慢,因为首次使用时会编译并分配代码、着色器与内部缓冲;若用户可感知延迟,应在启动时预热一次。通过 worker.Schedule(inputTensor) 提交推理,输出可用 worker.PeekOutput() 获取,DownloadToArray 读取结果。
实践规则:尽量保持张量形状稳定;若可降低结果消费频率,避免每帧从 GPU 下载到 CPU;同一观测结构的多个智能体可批量处理。用类似 Time.frameCount % inferenceInterval 的方式控制节奏,PC/主机可从 GPUCompute 起步,移动端/WebGL/较弱设备应尽早验证 CPU,锁定节奏前先做性能分析。
ML-Agents 集成:若模型来自 ML-Agents,训练与运行时必须保持观测顺序和形状一致,把导出的 ONNX 文件与运行时观测构建视为一对契约。示例包括 NPC 移动策略与自适应难度模型;也可与 unity-mcp 配合,由后者管理包、创建与校验脚本、跑测试与读控制台。
最佳实践:每个 Worker 都要在 OnDestroy 释放;在启动或加载界面预热首次调度;运行时观测顺序与训练时一致;优先 GPUCompute 与 CPU,GPUPixel 作为回退;发布前同时分析执行与回读开销;部署不稳定时先核验受支持的 ONNX 算子,再调试玩法代码。参考链接:https://docs.unity3d.com/Packages/com.unity.sentis@2.1/manual/create-an-engine.html 与 https://docs.unity3d.com/Packages/com.unity.sentis@2.1/manual/run-a-model.html。