Blueprint · 38 个原子画面 · 40 张英文实机图

画面变化一次,就跟一张图

本页只做一件事:从空白 Actor Blueprint 走到第一段真实的本地 AI 回答。每个卡片只包含一个可见动作;看到的画面与图片一致后,再继续下一张。

这是一条线性教程。不要跳到后面的最终连线图照抄;按顺序完成每个画面。需要查询节点、系统、C++ 或打包时,改去独立的 文档索引
Demo 与插件已经解耦。Demo 仓库不再附带插件源码或插件子模块;请先单独安装 LiteRT-LM 插件。项目总文档入口始终是 winyunq.github.io/LiteRT-LM-Unreal

准备

0. 先让插件和模型可用

0A

在 Edit → Plugins 中搜索 LiteRT,并启用 LiteRT-LM。

UE5 英文 Plugins 窗口中已经启用 LiteRT-LM
如果编辑器要求重启,先完成重启,再进入下一步。
0B

在 Project Settings 中填写相对 Content 的 Model Path。

UE5 英文 Project Settings 中的 LiteRT-LM Model Path
示例为 Models/gemma-4-E2B-it.litertlm;文件名可以不同,但文件必须存在。

Actor

1. 创建一个长期存在的 Actor Blueprint

01

打开 Content Drawer,并进入要保存教学资产的文件夹。

UE5 Content Drawer 已打开并显示内容文件夹
本例使用 /Content/LiteRTLM_Tutorials;你也可以使用自己的文件夹。
02

点击 Add,然后选择 Blueprint Class。

Content Browser 的 Add 菜单
只点击 Blueprint Class,暂时不要创建其他资产。
03

在 Pick Parent Class 窗口中选择 Actor。

Pick Parent Class 窗口中的 Actor 选项
这里需要普通 Actor,不是 Pawn、Character 或 Widget。
04

把新蓝图命名为 BP_LiteRtLm_QuickStart_StepByStep。

Content Browser 中命名后的教学 Actor Blueprint
蓝图会长期保存 Quick Chat 引用,所以不要使用 Level Blueprint 代替。
05

双击新资产,打开 Blueprint Editor。

新建 Actor Blueprint 的 Blueprint Editor
确认右上角显示 Parent class: Actor

Variable

2. 一步一步创建 QuickChat 对象引用

06

在 My Blueprint 中点击 Add,再点击 Variable。

My Blueprint 的 Add 菜单中选择 Variable
此时只新增一个成员变量。
07

看到 NewVar 出现后,先不要改变类型。

My Blueprint 中刚创建的 NewVar Boolean 变量
UE 默认创建 Boolean;下一张图先完成改名。
08

把 NewVar 改名为 QuickChat,并按 Enter。

变量已重命名为 QuickChat
变量名必须是 QuickChat;此时它仍然是 Boolean,这是正常的。
09

在 Details 中点击 Variable Type 下拉框。

Variable Type 类型选择菜单
类型列表打开后,光标会自动进入顶部搜索框。
10

搜索 Lite Rt Lm Quick Chat。

类型菜单搜索 Lite Rt Lm Quick Chat
结果应只剩 Lite Rt Lm Quick Chat
11

选择 Lite Rt Lm Quick Chat Object Reference。

QuickChat 已设置为 Lite Rt Lm Quick Chat 对象引用
类型变成蓝色对象引用,并出现 On Text Chunk、On Answer、On Error 等事件,说明选对了。
不要在每次提问时重新 Create Quick Chat。这个成员变量要保存同一个对象,才能保留对话记忆。

BeginPlay chain

3. 逐节点创建并发送第一条请求

12

双击 EventGraph,进入事件图。

新 Actor Blueprint 的默认 EventGraph
默认会看到 BeginPlay、ActorBeginOverlap 与 Tick。
13

删除 ActorBeginOverlap 和 Tick,只保留 Event BeginPlay。

EventGraph 中只保留 Event BeginPlay
这两个事件本教程不使用,删掉后画布更容易核对。
14

右键空白处,搜索并添加 Create Quick Chat。

EventGraph 中新增 Create Quick Chat 节点
先让节点出现在画布上,这一步还不连线。
15

把 BeginPlay 的白色执行引脚连接到 Create Quick Chat。

BeginPlay 已连接到 Create Quick Chat
白线只表示执行顺序。
16

在 System Prompt 填写 Answer concisely in the user's language.

Create Quick Chat 的 System Prompt 已填写
先使用短提示词,确认基础链路成功后再扩写。
17

把 QuickChat 变量拖入图中,并选择 Set。

EventGraph 中新增 Set QuickChat 节点
这一步新增 SET Quick Chat,先保持未连接。
18

连接 Create Quick Chat 与 SET Quick Chat 的白色执行引脚。

Create Quick Chat 执行输出已连接到 Set QuickChat
现在 BeginPlay 会先创建对象,再执行赋值。
19

把 Return Value 的蓝色引脚连接到 Quick Chat 输入。

Create Quick Chat 返回对象已保存到 QuickChat 变量
蓝线保存真实的 Quick Chat 对象引用;不要漏掉。
20

从 QuickChat 引用添加 Bind Event to On Answer。

新增 Bind Event to On Answer 和自动生成的 OnAnswer Event
UE 会同时生成匹配的 OnAnswer_Event;红色委托线已经自动连接。
21

把 SET Quick Chat 的白色执行输出连接到 Bind Event to On Answer。

Set QuickChat 执行输出已连接到 Bind Event to On Answer
回答事件必须在第一次 Ask 之前完成绑定。
22

把 SET 节点右侧的蓝色对象输出连接到 Bind 的 Target。

QuickChat 对象输出已连接到 Bind Target
Target 必须是刚才保存的同一个 QuickChat 对象。
23

从同一个 QuickChat 引用添加 Ask Once。

EventGraph 中新增 Ask Once 节点
先新增节点,不要误把 Return Value 当成模型回答。
24

把 Bind Event to On Answer 的白色执行输出连接到 Ask Once。

Bind Event to On Answer 执行输出已连接到 Ask Once
顺序现在是:创建 → 保存 → 绑定 → 提问。
25

把蓝色 QuickChat 对象输出连接到 Ask Once 的 Target。

QuickChat 对象已连接到 Ask Once Target
Bind 与 Ask 必须使用同一个 Target。
26

在 Message 中填写 Hello from Unreal Engine.

Ask Once 的 Message 已填写测试问题
第一条消息保持简短,方便判断是否真正收到本地模型回答。

On Answer chain

4. 逐节点读取并显示异步回答

27

在 OnAnswer_Event 附近添加 Break Lite Rt Lm Result。

OnAnswer Event 附近新增 Break Lite Rt Lm Result
回答正文在 Result 结构体里,因此需要先拆分。
28

把 OnAnswer_Event 的 Result 连接到 Break 节点输入。

OnAnswer Result 已连接到 Break Lite Rt Lm Result
蓝色结构线传递完整结果,包括 Text、Error 和 Metrics。
29

在右侧添加 Print String。

回答链中新增 Print String 节点
先保留默认选项;它会同时打印到屏幕和 Output Log。
30

把 OnAnswer_Event 的白色执行输出连接到 Print String。

OnAnswer Event 执行输出已连接到 Print String
只有 On Answer 真正触发时,Print String 才会执行。
31

把 Break 节点的 Text 连接到 Print String 的 In String。

Break Result 的 Text 已连接到 Print String
这条紫色线才是模型回答正文。
32

按两行整理节点,并按 Home 查看完整流程。

整理后的完整 Quick Chat EventGraph
上排负责创建、绑定与提问;下排负责接收、拆分与显示回答。
33

点击 Compile,确认没有红色编译错误,再点击 Save。

Quick Chat Blueprint 已成功编译
如果编译失败,先回到上一张完整图逐根核对白线、蓝线与紫线。

Level and PIE

5. 把 Actor 放进关卡并看到真实回答

34

把 BP_LiteRtLm_QuickStart_StepByStep 从 Content Browser 拖进关卡。

Outliner 中已经出现 Quick Start Actor 实例
松开鼠标后,Outliner 中必须出现一个 Actor 实例;只创建资产而不放进关卡,BeginPlay 不会运行。
35

点击 Play,并等待第一次本地模型初始化完成。

UE5 已进入 Play In Editor
第一次运行需要先加载 GPU 模型,通常比后续提问慢;不要连续点击 Play。
36

打开 Output Log,搜索 BlueprintUserMessages,确认出现模型回答。

Output Log 中显示本地模型回答
实测回答:Hello! How can I help you today with Unreal Engine?;这证明 Create、Bind、Ask 与 On Answer 已全部跑通。

Complete demo

6. 基础链路成功后,继续到完整狼人杀 Demo

快速入门到此结束。下面两张图只负责把你带到真正的多 Agent 示例;角色记忆、轮次、暂停与恢复等细节放在独立的多会话教程中。

37

打开 L_WerewolfShowcase,点击 Play,并在配置页确认人数与身份偏好。

完整狼人杀 Demo 的对局配置页
Demo 会让每个 AI 角色持有独立会话;默认配置为 10 名玩家和严格 GPU 模型。
38

点击 START,确认 10 名玩家进入夜晚行动界面。

狼人杀 Demo 已创建 10 名玩家并进入夜晚行动
这就是多会话的实际运行结果:玩家名册、当前阶段、现场发言和每名 Agent 的独立状态同时存在。

完成标准

下面四项同时成立,第一段本地 AI 对话才算完成

  • QuickChat 是 Lite Rt Lm Quick Chat Object Reference
  • Quick Chat 只在 BeginPlay 创建一次,并保存到成员变量。
  • On Answer 在 Ask Once 之前完成绑定。
  • Output Log 能看到来自 Result.Text 的真实模型回答。