Skip to content
Verse Scripting

Verse 脚本入门指南:你的第一个 UEFN 设备

2026-03-059 分钟阅读

什么是 Verse?

Verse 是 Epic Games 专为 UEFN 设计的编程语言。如果你使用过 Python,你会觉得 Verse 很熟悉——它使用基于缩进的语法,读起来几乎像英文。但它也借鉴了 Haskell 等函数式编程语言的思想,使其在处理游戏逻辑方面功能强大。

UEFN 中超出基本 Creative 设备的每一个自定义行为都需要 Verse。计分系统、自定义 UI、装备管理器、回合管理、排名进度——全部依赖 Verse。

设置你的第一个 Verse 设备

在 UEFN 中创建一个新的 Verse 设备:

  1. 在 UEFN 中打开你的项目
  2. 前往 Verse 菜单 → Create New Verse File
  3. 选择 Creative Device 作为模板
  4. 将其命名为 my_first_device

UEFN 会生成一个如下所示的模板文件:

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

my_first_device := class(creative_device):

 OnBegin<override>()<suspends>:void=
 Print("Hello, Fortnite!")

让我们逐步解析。

理解基础概念

`using` 语句 ——这些用于导入 API。/Fortnite.com/Devices 让你可以访问 Creative 设备。/Verse.org/Simulation 提供核心模拟功能。/UnrealEngine.com/Temporary/Diagnostics 提供用于调试的 Print() 函数。

类定义 ——my_first_device := class(creative_device) 创建一个继承自 creative_device 的新设备类。这就是你将放置在世界中的自定义设备。

OnBegin ——此函数在游戏开始时运行。<override> 标签表示你正在覆盖父类的 OnBegin。<suspends> 标签表示此函数可以使用异步操作(如 Sleep())。

构建一个击杀计数器

让我们构建一些实用的东西——一个跟踪击杀并显示它们的设备。首先,你需要在关卡中引用一个 UI 设备:

using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Verse.org/Simulation }

kill_counter := class(creative_device):

 @editable
 EndGameDevice : end_game_device = end_game_device{}

 var KillCounts : [agent]int = map{}

 OnBegin<override>()<suspends>:void=
 # Subscribe to elimination events
 GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded)

 OnPlayerAdded(Player : player):void=
 if (FortCharacter := Player.GetFortCharacter[]):
 FortCharacter.EliminatedEvent().Subscribe(OnEliminated)

 OnEliminated(Result : elimination_result):void=
 if (Eliminator := Result.EliminatingCharacter):
 if (Player := player[Eliminator.GetAgent[]]):
 if (set KillCounts[Player] += 1) {}

关键 Verse 概念

可失败表达式 ——Verse 使用 if 来处理可能失败的操作。Player.GetFortCharacter[] 如果玩家没有角色可能不返回任何内容。[] 方括号表示一个可失败调用,将其包裹在 if 中可以优雅地处理失败情况。

可变性 ——使用 var 声明的变量可以被修改。没有 var 的情况下,值默认是不可变的。这可以防止意外的状态修改。

事件与订阅 ——Verse 使用事件驱动模式。你订阅事件(PlayerAddedEventEliminatedEvent)并提供回调函数。这让你无需轮询即可响应游戏事件。

映射和数组 ——[agent]int 是一种映射类型(字典),将 agent 映射到整数。map{} 创建一个空映射。

常用模式

以下是你在几乎每个 Verse 设备中都会用到的模式:

计时器/延迟:

Sleep(5.0) # 等待 5 秒

循环:

loop:
 DoSomething()
 Sleep(1.0)

玩家遍历:

Players := GetPlayspace().GetPlayers()
for (Player : Players):
 # 对每个玩家执行操作

后续步骤

本指南涵盖了最基础的内容。如需深入学习:

  • 阅读 Epic 官方的 Verse 文档
  • 研究 GitHub 上的开源 Verse 项目
  • 通过用 Verse 重新构建现有 Creative 设备来练习
  • 加入 UEFN Discord 社区获取帮助

构建自定义 Verse 设备是区分专业 UEFN 开发者和业余爱好者的关键。如果你的地图需要复杂的自定义机制,我们的团队专注于 Verse 脚本开发——从自定义计分系统到完整的游戏模式框架。

查看我们的作品集,了解 Verse 在 10 张已发布地图中的实际应用,总游玩时间超过 48 亿分钟。

K

Kaio

Kaio Corporation UEFN 地图开发者

专业 Fortnite UEFN 地图开发者。累计超过 48 亿分钟游玩时长。 了解更多

需要定制地图?

联系我们