任务功能包提供了出盒功能,可以创建玩家可以完成以获得奖励和进步的任务。所有任务必须有一个ID、类别和玩家必须完成的任务列表,才能完成任务。然而,任务列表可以为空,允许立即领取任务的奖励。
使用包裹的自定义选项,您可以将所有任务个性化,以满足您的独特游戏需求,例如:

获取包装
创建者商店是您可以使用的工具箱选项卡,可用于查找 Roblox 和 Roblox 社区制作的所有资产,包括模型、图像、网格、音频、插件、视频和字体资产。您可以使用创作者商店直接将一个或多个资产添加到开放体验中,包括功能包!
每个功能包都需要 核心 功能包正常运行。一旦 核心 和 任务 功能包资产已位于您的道具,您可以在平台上的任何项目中重复使用它们。
要将库存的包从你的体验中获取到你的体验:
在 Studio 中通过单击以下组件中的 添加到库存 链接将 核心 和 任务 添加到库存中
在工具栏中,选择视图标签。
点击 工具箱 。显示 工具箱 窗口。
在 工具箱 窗口中,单击 库存 选项卡。显示 我的模型 排序。
单击 功能包核心 瓦片,然后单击 任务功能包 瓦片。两个包文件夹都显示在 资源管理器 窗口。
将包裹文件夹拖入 复制存储 。
定义任务
每个可完成的任务包括完成任务所需的一组任务,配置选项和可选显示元数据,所有这些都可以在 ReplicatedStorage.Missions.Configs.Missions 内定义,其中类型从 Types 脚本中导出到同一文件夹。
必填字段
每个任务都需要以下字段。
名称 | 类型 | 描述 |
---|---|---|
missionId | string | 主任务表键。所有任务都由自己独特的字符串识别。 |
categoryId | string | 任务必须属于一个类别,在用户界面中按类别进行分组。 |
tasks | table | 玩家必须完成的任务列表,以完成任务。 |
解锁条件
默认情况下,任务会自动为玩家解锁,并且只能完成一次。然而,您可以使用以下 可选 配置选项来改变此行为。
名称 | 类型 | 描述 |
---|---|---|
prerequisites | table | 在任务可以解锁之前必须完成的其他任务Id列表。 |
manualOnly | bool | 禁用任务的自动解锁。相反,必须调用函数来解锁任务。还必须满足其他任何解锁条件。 |
availableAfterUtc | bool | 在 UTC 指定的时间之前,无法解锁任务。 |
availableBeforeUtc | bool | 任务在指定的 UTC 时间后无法解锁。如果在此时间之前解锁但未完成,任务将失败。 |
repeatable | bool | 任务在完成后再次解锁。 |
repeatLimit | number | 如果任务可重复,它不能重复超过这么多次。 |
repeatCooldownSeconds | number | 如果任务可重复,在任务解锁之前会有一段延迟。 |
expireSeconds | number | 如果任务未在指定的秒数内解锁并完成,则会失败。 |
expireCountOffline | bool | 如果任务有 expireSeconds 和 expireCountOffline 被设置为真实,玩家实际上不在体验中的时间将计入任务过期期限。 |
元数据
任务具有元数据,该元数据指定任务在任务用户界面中如何显示。您可以使用以下 可选 字段来自定义其元数据。
名称 | 类型 | 描述 |
---|---|---|
displayName | string | 用于在用户界面显示任务的名称,而不是 missionId 。 |
description | string | 一个更长的文本块,提供有关任务的额外信息或上下文。 |
visibleAfterComplete | bool | 如果设置为真实,任务将在完成但标记为完成后仍显示在任务列表中。 |
visibleAfterFailed | bool | 如果设置为真,任务在失败但被标记为失败后仍会出现在任务列表中。 |
visibleBeforeUnlocked | bool | 如果设置为真实,任务将可见但在完成前被锁定在任务列表中。 |
invisibleWhileActive | bool | 如果设置为真实,任务即使在进行中也会隐形。 |
rewards | table | 奖励显示信息的列表。
|
定义任务
每个任务可以有零或更多的任务。如果任务没有任务,它将在解锁后立即领取;如果任务有一个或多个任务,任务完成后,玩家可以收集与任务相关的任何奖励。每个任务都有一个 taskId , 这是与给定任务相关的任务的关键。
任务有两种类型:
- 定时任务 - 让你在不同时间点开始和停止任务。任务计时器运行时必须等待一定时间,任务才完成。
- 计数任务 - 让你增加或设置任务的进度。当进度达到设置值时,任务完成。
两种任务类型都共享以下字段:
名称 | 类型 | 描述 |
---|---|---|
taskType | string | 指定任务类型是否为计数或计时。 |
counter | object | (可选)此任务的计数器。计数器是玩家特定的持久存储 для数字或计时器。多个任务可以跟踪单个计数还价;例如,如果多个任务跟踪玩家收集了多少硬币,那么它们都可以共享相同的“硬币”计数器。这些任务可以独立地跟踪收集到的新硬币,从零开始,或继续从计数器值开始计数(所有硬币已收集)。
|
metadata | object | (可选)关于任务在 UI 中显示的信息。
|
callToAction | object | (可选)一个按钮,触发回调函数。
|
计数任务领域
计数任务有一个必需值。当任务进度达到此数量时,任务完成。
名称 | 类型 | 描述 |
---|---|---|
goalCount | number | (可选)完成任务所需的进度。 |
时间任务字段
时间任务有一个目标时间消耗量,并且被启动和停止。当目标时间消耗量达到时,任务完成。
名称 | 类型 | 描述 |
---|---|---|
goalSeconds | number | 完成任务所需的秒数。 |
startImmediately | bool | 如果任务必须在解锁后尽快开始计时,而不是在启动后才开始计时。 |
includesOfflineTime | bool | 如果任务应包括玩家在体验中不活跃的时间。 |
配置类别
类别不需要明确定义以便使用,因为任务的类别具有默认值,将被使用。然而,您可以在 ReplicatedStorage.Missions.Configs.Categories 中配置这些值,以将额外的效果添加到类别。类别由独特的 CategoryIds 识别,与任务配置中引用的相同。
名称 | 类型 | 描述 |
---|---|---|
repeatDelaySeconds | number | (可选) 如果设置,那么类别中的所有任务每当通过指定的时间量时都会重置,可以解锁、完成并重新领取奖励。这与可重复的任务不同,可在给定的类别中重复。 |
整合服务器逻辑
看看 ReplicatedStorage.Missions.Server.Examples.MissionsExample , 它显示了您的服务器如何与 任务包 功能包互动。
您主要需要将四个东西连接起来一次拖动 任务 功能包到您的体验中:
在你的任务配置中定义任务。
为您的体验添加逻辑以更新任务进度或与进度关联的计数器。
阅读说明-- 通过跳跃任务在任务上提高进度Missions.addProgressToTask(player, "Jumping", "Jumps", 1)-- 启动在任务战斗时间上的计时器,使用战斗时间任务Missions.startTimedTask(player, "BattlingTime", "TimeInBattle")-- 停止计时器在任务战斗时间上执行 TimeInBattle 任务Missions.stopTimedTask(player, "BattlingTime", "TimeInBattle")-- 提高与跳跃计数还价相关的所有任务的进度CounterSystem.addCounter(player, "Jumps", 1)-- 启动与战斗时间计数器相关的所有定时任务的计时还价CounterSystem.startTimer(player, "TimeInBattle")-- 停止所有定时任务与战斗时间计数器相关的定时任还价CounterSystem.stopTimer(player, "TimeInBattle")设置任务完成处理器,并可选择解锁或失败处理器。使用完成处理器来奖励体验中的任务的奖励。
阅读说明local function completeHandler(player: Player, missionId: Types.MissionId)print(`{player} completed mission {missionId}`)-- 奖励玩家他们的奖励。endMissions.setCompletionHandler(missionId, completeHandler)解锁不自动解锁的任务。 任务 功能包逻辑确保在任务完成之前满足所有任务要求,并且其奖励可收藏品。
阅读说明Missions.unlockMission(player, "Manual")
配置常量
核心 功能包的常量在两个地方生活:
共享常量生活在 ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants 。
包装特定常量,在这里是 任务 功能包,生活在 ReplicatedStorage.Missions.Configs.Constants .
此外,您可以找到分布在一个位置的翻译字符串:ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings。
自定义用户界面组件
通过修改包裹对象,例如颜色、字体和透明度,您可以调整任务 UI 的视觉呈现。例如,在 ReplicatedStorage.Missions.Configs.Constants 中,您可以启用 SingleTaskMode 将进度条显示在任务本身的任务上,用于任务数量仅为单个任务的任务。
此外,如果您的体验已经拥有与 任务 功能包集成的现有用户界面,客户端 包含了获取服务器发送玩家任务的所有必需功能。