任務功能包提供即時可用的功能,以創建玩家可以完成以獲得獎勵並在您的遊戲中進行進度的任務。所有任務必須具有 ID、類別和玩家必須完成的任務列表以完成該任務。然而,任務列表可以是空的,允許立即索取任務的獎勵。
使用該包的自定義選項,您可以個性化所有任務以滿足您獨特的遊戲需求,例如:
- 通過添加中期到長期目標和進步感來針對 D7 和 D30 留存率。
- 通過展示您遊戲中的各種系統並獎勵玩家與它們互動來增加 參與度。

獲取包
創作者商店是 工具箱 的一個選項卡,您可以使用它來查找所有由 Roblox 和 Roblox 社區製作的資產,以便在您的項目中使用,包括模型、圖像、網格、音頻、插件、視頻和字體資產。您可以使用創作者商店將一個或多個資產直接添加到打開的遊戲中,包括功能包!
每個功能包都需要 核心 功能包才能正常運行。一旦 核心 和 任務 功能包資產在您的庫中,您可以在平台上的任何項目中重用它們。
要將庫中的包添加到您的遊戲中:
通過單擊以下組件集中的 添加到庫 連結,將 核心 和 任務 添加到您在 Studio 中的庫。
從 Studio 的 窗口 菜單或 首頁 標籤工具欄中,打開 工具箱。
在 工具箱 窗口中,單擊 庫 標籤。顯示 我的模型 排序。

單擊 功能包核心 瓷磚,然後單擊 任務功能包 瓷磚。兩個包文件夾在 資源管理器 窗口中顯示。
將包文件夾拖入 ReplicatedStorage。
定義任務
每個可完成的任務包括一組必須完成的任務、配置選項和可選的顯示元數據,所有這些都可以在 ReplicatedStorage.Missions.Configs.Missions 中定義,類型從同一文件夾中的 Types 腳本導出。
必填字段
每個任務需要以下字段。
| 名稱 | 類型 | 描述 |
|---|---|---|
| missionId | string | 主要任務表的鍵。所有任務都由其唯一字符串識別。 |
| categoryId | string | 任務必須屬於一個類別,並在 UI 中按類別分組。 |
| tasks | table | 玩家必須完成的任務列表以完成該任務。 |
解鎖條件
默認情況下,任務會自動為玩家解鎖,並且只能完成一次。然而,您可以使用以下 可選 配置選項來更改此行為。
| 名稱 | 類型 | 描述 |
|---|---|---|
| prerequisites | table | 必須在任務解鎖之前完成的其他 missionIds 列表。 |
| manualOnly | bool | 禁用任務的自動解鎖。相反,必須調用一個函數來解鎖該任務。任何其他解鎖條件也必須滿足。 |
| availableAfterUtc | bool | 在指定的 UTC 時間之前無法解鎖該任務。 |
| availableBeforeUtc | bool | 在指定的 UTC 時間之後無法解鎖該任務。如果在此時間之前解鎖但未完成,則該任務將失敗。 |
| repeatable | bool | 該任務在完成後再次解鎖。 |
| repeatLimit | number | 如果該任務是可重複的,則不能重複超過此次數。 |
| repeatCooldownSeconds | number | 如果該任務是可重複的,則在其再次解鎖之前會有延遲。 |
| expireSeconds | number | 如果該任務已解鎖且在指定的秒數內未完成,則將失敗。 |
| expireCountOffline | bool | 如果該任務具有 expireSeconds 且 expireCountOffline 設置為 true,則玩家不在遊戲中的時間將計入任務過期。 |
元數據
任務具有元數據,指定它們將如何在任務用戶界面中顯示。您可以使用以下 可選 字段來自定義其元數據。
| 名稱 | 類型 | 描述 |
|---|---|---|
| displayName | string | 在用戶界面中顯示的任務名稱,而不是 missionId。 |
| description | string | 提供有關該任務的額外信息或上下文的較長文本塊。 |
| visibleAfterComplete | bool | 如果設置為 true,該任務即使在完成後也會顯示在任務列表中,但標記為已完成。 |
| visibleAfterFailed | bool | 如果設置為 true,該任務即使在失敗後也會顯示在任務列表中,但標記為已失敗。 |
| visibleBeforeUnlocked | bool | 如果設置為 true,該任務在可完成之前將在任務列表中可見但被鎖定。 |
| invisibleWhileActive | bool | 如果設置為 true,該任務即使在積極進行中也將不可見。 |
| 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 識別,這些 ID 與任務配置中引用的 ID 相同。
| 名稱 | 類型 | 描述 |
|---|---|---|
| repeatDelaySeconds | number | (可選) 如果設置,該類別中的所有任務在指定的時間間隔內重置,並且可以再次解鎖、完成和索取獎勵。這與可重複的任務不同,後者在給定的類別重複。 |
整合伺服器邏輯
查看 ReplicatedStorage.Missions.Server.Examples.MissionsExample,該示例顯示了您的伺服器將如何與 任務 功能包互動。
您主要需要在將 任務 功能包拖入遊戲後連接四件事:
在您的任務配置中定義任務。
向您的遊戲添加邏輯以更新任務進度或與進度相關的計數器。
README-- 在任務 Jumping 中增加 Jumps 任務的進度Missions.addProgressToTask(player, "Jumping", "Jumps", 1)-- 在任務 BattlingTime 中開始計時任務 TimeInBattleMissions.startTimedTask(player, "BattlingTime", "TimeInBattle")-- 停止任務 BattlingTime 中的計時任務 TimeInBattleMissions.stopTimedTask(player, "BattlingTime", "TimeInBattle")-- 增加所有與 Jumps 計數器相關的任務的進度CounterSystem.addCounter(player, "Jumps", 1)-- 開始所有與 TimeInBattle 計時器計數器相關的計時任務CounterSystem.startTimer(player, "TimeInBattle")-- 停止所有與 TimeInBattle 計時器計數器相關的計時任務CounterSystem.stopTimer(player, "TimeInBattle")設置任務完成處理程序,並可選擇設置解鎖或失敗處理程序。使用完成處理程序在您的遊戲中獎勵任務的獎勵。
READMElocal function completeHandler(player: Player, missionId: Types.MissionId)print(`{player} 完成了任務 {missionId}`)-- 獎勵玩家的獎勵。endMissions.setCompletionHandler(missionId, completeHandler)解鎖未自動解鎖的任務。任務功能包邏輯確保在任務完成之前滿足所有任務要求,並且其獎勵可被收集。
READMEMissions.unlockMission(player, "Manual")
配置常量
核心 功能包的常量位於兩個位置:
共享常量位於 ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants。
包特定的常量,在這種情況下是 任務 功能包,位於 ReplicatedStorage.Missions.Configs.Constants。
此外,您可以在一個位置找到用於翻譯的字符串:ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings。
自定義 UI 組件
通過修改包對象,例如顏色、字體和透明度,您可以調整任務 UI 的視覺呈現。例如,在 ReplicatedStorage.Missions.Configs.Constants 中,您可以啟用 SingleTaskMode 以在僅有一個任務的任務上直接顯示進度條。
此外,如果您的遊戲已經有現有的 UI,您希望與 任務 功能包集成,客戶端 ModuleScript MissionsClient 包含所有必要的函數,以從伺服器獲取有關玩家任務的信息。