核心概念:五分钟看懂 SF 的骨架
第 2 章 · 原理

核心概念:五分钟看懂 SF 的骨架

为什么 SF 把功能拆成五个组件?你该在哪里写自己的逻辑?这一章解释框架的设计哲学、如何在任意蓝图里拿到管理器,以及读文档必须懂的十几个虚幻术语。

本章最关键 读完能定位 90% 的修改点 含术语中英对照

如果你只读一章,请读这一章。SF 的官方文档之所以让人看不懂,很大原因是它假设你已经知道框架是怎么组织的。 这里先把这个组织方式讲清楚,后面所有章节都会变得顺理成章。

一个核心设计:不在玩家蓝图里写逻辑

大多数虚幻教程会教你:把交互、背包、血量这些逻辑,统统写在玩家角色蓝图(Player Character)或玩家控制器蓝图(Player Controller)的事件图表里。 这样能跑,但会迅速变成一坨几千个节点的蜘蛛网。

SF 走的是另一条路:

设计原则

把每个“功能领域”封装成一个 Actor Component(Actor 组件),挂到玩家控制器上。 玩家控制器里只保留输入事件(按键 → 调用哪个组件), 其余 95% 的逻辑都在组件内部。这样你改背包不会碰到对话,改相机不会碰到存档。

这五个组件就是全部家当:

PLAYER CONTROLLER 玩家控制器蓝图 Interaction Manager 交互 · 提示 · QTE · 进度动作 Inventory Manager 背包 · 日志 · 回忆录 · 任务 Camera Manager 第一/第三人称 · 镜头函数 Sequence Manager 过场 · 字幕语音 · 故事选择 Save Manager 存档 · 自动保存 · 读档 世界里的可交互物体 InteractableBase_BP 及其子类 被射线打中 → 显示提示 → 按键触发 界面(UMC / 各种 Widget) 统一菜单容器、交互提示、弹窗通知 按键图标随键鼠 / 手柄自动切换 存档数据 SaveGame 对象 + GameInstance 跨关卡保存背包、任务、剧情标记
图 2-1 五大组件都挂在玩家控制器上。你在任何蓝图里通过「引用函数」拿到它们,再调用其内部函数。

五个管理器分别管什么

组件(类名)负责你会在什么时候碰它
SFInteractionManager_AC 发射交互射线、显示提示、执行五种交互方式、QTE、进度动作 做任何“能按 E 的东西”时
SFInventoryManager_AC 快捷背包、道具组合、日志、回忆录、任务队列 加道具、发任务、解锁日志时
SFCameraManager_AC 第一/第三人称预设、视角灵敏度、锁定目标 改视角、做镜头演出时
SFSequenceManager_AC 播放关卡序列、字幕语音、故事选择 做过场、语音、重大抉择时
SFSaveManager_AC 存档、自动存档、读档 做存档点、保存自定义进度时
类名为什么都以 _AC 结尾

_AC 是 Actor Component 的缩写。官方文档在「交互系统」页面把 SFInteractionManager_AC 简写成 SFInteraction_AC,指的是同一个东西。 记不住全名没关系:在任意蓝图里右键搜「Interaction Manager」,或在组件面板搜 SF,都能找到它们。

最重要的一个技能:拿到管理器

SF 提供了引用函数库,让你在任何蓝图(关卡蓝图、道具蓝图、UI 蓝图)里一句话拿到组件,不需要 Cast、不需要拖引用。

  1. 在任意蓝图的事件图表里右键 搜索「Interaction Manager」「Inventory Manager」「Camera Manager」「Sequence Manager」「Save Manager」中的任意一个。
  2. 选择一个返回值为组件的节点 例如 Get SF Interaction Manager,把它拖出来。
  3. 从它的输出引脚继续拖,搜索你要的函数 例如 Add Item to Inventory、Add Main Task to Queue。
五个引用节点
五个引用节点长这样,它们的后缀都是 (Controller),表示“从玩家控制器上取这个组件”。
这是你 80% 时间的操作

官方文档里凡是写「using a reference to the Inventory Manager」的地方,意思就是: 先拿到 Inventory Manager 引用,再调用后面这个函数。 你只要记住这个套路,剩下的就是查函数名。

什么是“可交互物体”(Interactable)

SF 里所有能被玩家操作的东西,都满足两个条件之一:

  • 继承自 InteractableBase_BP——最简单,已经带好了网格组件、碰撞、交互数据结构和提示逻辑。
  • 自己实现 SFInteraction_BPI 蓝图接口——适合你已有的自定义 Actor(比如你自己写的门、电梯)。实现后它就“注册”成了一个可交互物。

每个可交互物身上都有一个结构体变量 InteractableData_S,里面塞着它能用哪种交互方式、叫什么名字、图标是什么、能不能组合…… 你 90% 的配置工作,就是填这个结构体。

SFV:一个装满开关的数据资产

StoryFrameworkValues(简称 SFV)是一个数据资产(Data Asset),里面集中了相机、背包、UI、对话、任务的全局配置。 你在官方节点名里看到的 “SFV” 就是它。

打开方式有三种,任选:

  1. 内容浏览器搜索 StoryFrameworkValues;
  2. 装了快捷工具栏后:顶部菜单 Story Framework → Framework Settings;
  3. 从 SFGameInstance_BP 里引用(5.1 起 SFV 移到了 GameInstance,保证不依赖玩家控制器是否存在)。
别随手改 SFV 里的所有东西

官方明确说:细节面板里暴露了很多值,但只有一部分是给你改的。 不确定的项先别动;改之前记下原值。SFV 影响全局,改坏了所有关卡一起坏。

输入:为什么打开背包后按键就变了

SF 用「输入映射上下文(IMC)」来切换操作方案:

IMC什么时候生效管什么
SFGameplay_IMC正常游玩移动、视角、交互、打开背包
Inventory_IMC背包/菜单打开时导航、使用、组合、关闭
WidgetMenu_IMC全屏菜单/弹窗菜单导航

这样设计的好处是:同一个键在不同界面下有不同含义,且不会误触发。 你要加自己的操作(比如“按 Q 扔石头”),正确做法是:新建 Input Action → 在 SFGameplay_IMC 里绑定 → 在玩家控制器里接事件 → 调组件函数。

蓝图里的颜色暗号

橙色 = 演示,可删

SF 的部分蓝图用橙色标记图表或注释块,意思是「这里是为了演示效果,你可以删掉或禁用」。 黑色的注释块是核心功能,动之前要小心(例外:播放音效相关的逻辑通常可以随意改)。 看到橙色,就放心大胆地改。

编辑器工具:让配置不那么痛苦

可交互物的数据都塞在结构体里,在细节面板里折叠得很深。SF 提供了一个编辑器实用工具(Editor Utility Widget) SFEditor, 把这些字段按类别铺开,改起来直观得多。它还能存相机变换信息、批量检查关卡里的交互物。

启用方式(可选,但强烈推荐):

  1. 启用 Python 插件 打开 Project Settings → Plugins → Python,确认 Python Editor Script Plugin 已启用。
  2. 添加启动脚本 在同一页面的 Startup Scripts 下新增一条,粘贴作者提供的脚本(官方文档里给了 pastebin 链接)。
  3. 重启编辑器 顶部工具栏(PIE 按钮旁边)会出现 Story Framework 下拉菜单,里面就是 Framework Settings 和各种快捷入口。
Story Framework 工具栏菜单
工具栏里的 Core Components 子菜单几乎就是全站地图:交互、背包、序列、对话、相机、存档都在里面,点一下直达。
不装也行

这个工具栏纯属锦上添花。所有功能都能通过内容浏览器手动找到,只是要多点几下。 如果你在迁移到自己的工程,这段脚本在迁移完成后再加,避免路径错乱。

附:读文档必须懂的 10 个虚幻术语

下面这些词,官方文档里出现时不会解释,但对新手是硬门槛。每个都配了「在 SF 里对应什么」。

术语一句话解释在 SF 里
Actor 能放进关卡里的东西,有位置、有旋转。角色、门、灯、触发器都是 Actor。 每一个可交互物、每一个 NPC 都是 Actor
Component
(Actor Component)
挂在 Actor 身上的“插件”,给 Actor 增加能力。一个 Actor 可以挂很多个。 五大管理器就是挂在玩家控制器上的组件
Blueprint Interface
(BPI,蓝图接口)
一份“函数名单”,任何类实现它就必须提供这些函数。用来让不同的类被统一调用。 SFInteraction_BPI(交互)、SFPlayerControllerData_BPI(提供组件引用)
Structure
(结构体,_S 结尾)
一组打包的数据,像一张表单。可以整体传递。 InteractableData_S(交互配置)、TaskInfo_S(任务信息)
Enum
(枚举)
只能从固定几个选项里选一个的变量。 交互方式、检视方式、相机预设都是枚举
Data Table
(数据表)
类似 Excel 的表格资产,一行一条数据。改内容不用改蓝图。 道具组合、回忆录、NPC 叫声、按键样式
Data Asset
(数据资产)
只存数据、不存逻辑的资产文件。 StoryFrameworkValues(SFV)
Event Dispatcher
(事件分发器)
“广播”。组件喊一声,任何绑定了的蓝图都会收到,不用互相知道对方存在。 OnPerformActionFinished、OnStoryChoiceChosen 等
Input Action / IMC UE5 增强输入:动作(做什么)+ 上下文(什么时候生效)。 SFGameplay_IMC 等
Game Instance 贯穿整个游戏进程、切关卡也不会销毁的对象。 SFGameInstance_BP,存 SFV 引用与存档逻辑

骨架讲完了。接下来进入第一个实战系统:交互。

第 3 章 · 交互系统 →

视频版:B 站课程 第 2 分 P · 项目概述(14 分钟)、第 5 分 P · 编辑器工具(11 分钟)

本页由官方英文文档(visualonecompany.gitbook.io)整理、翻译并重排,并补充了第三方教程(Jay Versluis)与面向 UE 新手的解释性内容。产品版权归 VisualOne Projects 所有;本手册为学习用途的非官方中文资料,与作者无隶属关系。

如有疑问,官方支持渠道:Discord 社区 · Fab 商店页