參與獎勵

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

參與獎勵功能包是一個可自定義的框架,用於為某些玩家活動提供遊戲內獎勵,包括每日登錄連續天數和遊玩時間。除了客戶端和伺服器邏輯外,該包還包括一個默認的用戶界面,用於查看獎勵進度、獎勵狀態和領取獎勵。

獲取該包

  1. 通過點擊這裡的 添加到庫存 連結,將 核心參與獎勵 包添加到您的 Studio 庫存中:

  2. 從 Studio 的 窗口 菜單或 首頁 標籤工具欄中,打開 工具箱

  3. 工具箱 窗口中,點擊 庫存 標籤。顯示 我的模型 排序。

    Studio 的工具箱窗口,庫存標籤突出顯示。
  4. 點擊 功能包核心 瓦片,然後點擊 參與獎勵功能包 瓦片。兩個包文件夾在 資源管理器 窗口中顯示。

  5. 將文件夾拖入 ReplicatedStorage

初始化該包

將包移動到 ReplicatedStorage 並測試您的遊戲會運行 ReplicatedStorage.EngagementRewards.Server.Examples 中的 EngagementRewardsExample 腳本。

該腳本顯示如何初始化該包以供您的遊戲使用,這涉及到要求幾個模塊腳本並定義一個 rewardClaimedHandlerFunction() 函數,最終將獎勵給予玩家。

該函數必須返回一個布林值。在示例腳本中,您可以看到它不會給玩家任何獎勵;它只是打印玩家、獎勵和正在領取的數量。

EngagementRewardsExample
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EngagementRewardsConfig = require(ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig)
local EngagementRewards = require(ReplicatedStorage.EngagementRewards.Server.EngagementRewards)
local EngagementRewardsUtils = require(ReplicatedStorage.EngagementRewards.Utils.EngagementRewardsUtils)
local Types = require(ReplicatedStorage.EngagementRewards.Configs.Types)
-- 用您自己的獎勵領取處理函數替換此處理函數
-- 此函數應處理傳入的 rewardId 的獎勵領取事件
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`獎勵 {rewardId}{player} 領取,數量 {quantity}`)
return true
end
-- 更多

您可以直接修改此腳本,或將其移動到 ServerScriptService,如果那是您首選的伺服器代碼位置。按原樣,該腳本僅對測試目的有用。

將獎勵給予玩家的方式因遊戲而異。在某些遊戲中,您可能會提供遊戲增益或僅增加玩家的金幣數量。在其他遊戲中,您可能會有自定義的庫存系統,而其他遊戲可能會將物品放入玩家的背包中。然而,在所有情況下,您必須用自己的函數替換 rewardClaimedHandlerFunction()

添加獎勵和標準

大多數獎勵自定義發生在 ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig 中。此模塊腳本定義了獎勵及其解鎖要求。

您可以在 ReplicatedStorage.EngagementRewards.Configs.Types 中查看完整的類型聲明(或添加新的),但您可能只需要處理 EngagementRewardsConfig。該功能包包括兩種類型的獎勵:時間每日

local engagementRewardsConfig: Types.EngagementRewardsConfig = {
[Types.RewardType.Time] = {
tabDisplayName = "時間",
tabOrder = 1,
description = "繼續遊玩以解鎖獎勵!",
rewards = {
MinutesPlayed1 = {
icon = 116913478160966,
displayName = "冰矛",
requiredSecondsInGame = 1 * 5,
},
-- 更多
[Types.RewardType.Daily] = {
tabDisplayName = "每日",
tabOrder = 2,
description = "每日遊玩以解鎖獎勵!",
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "冰矛",
requiredDaysVisitedStreak = 1,
effect = Types.RewardEffect.Valuable,
},
-- 更多

兩種類型的獎勵都需要一個圖標,這是一個 Roblox 資產 ID,用於圖像(不是 貼圖)。您可能還希望為用於 UI 的顯示名稱指定 quantity,對於其他值,您可以選擇性地將獎勵指定為有價值的(effect = Types.RewardEffect.Valuable),以在 UI 中給予不同的背景框架。

變量類型描述默認值必需
icon數字用於 UI 圖標的 Roblox 資產 ID。N/A
displayName字串用於 UI 的獎勵名稱。RewardId
quantity數字獎勵的物品數量。1
effectRewardEffect用於 UI 的視覺效果。請參見 自定義 UITypes.RewardEffect.Default

時間獎勵

時間 獎勵在遊戲中達到一定秒數後解鎖。根據您的需求自定義這些數字。您可能會使用小數字進行簡單測試,而在發佈的遊戲中,則在 10 分鐘後提供獎勵,30 分鐘後再提供獎勵,1 小時後再提供獎勵,依此類推。

乘法使得以秒為單位的數字對人類來說更容易處理,因此對於兩小時,您可能更喜歡指定 2 * 60 * 60 而不是 7200

變量類型描述默認值必需
requiredSecondsInGame數字玩家必須在遊戲中花費的秒數(正整數),以獲得獎勵。N/A

每日獎勵

每日 獎勵在連續登錄的天數達到一定數量後解鎖。例如,玩家第一次登錄時,您可能會給他們三個藥水或一個肉桂捲。在隨後的幾天中,您可能會獎勵更有價值的消耗品,然後在連續七天後給予耐用物品,例如新的釣魚竿。

變量類型描述默認值必需
requiredDaysVisitedStreak數字玩家必須連續登錄的天數,以獲得獎勵。N/A

DailyRewardTabConfig 中還有兩個額外的每日獎勵配置選項。

[Types.RewardType.Daily] = {
tabDisplayName = "每日",
tabOrder = 2,
description = "每日遊玩以解鎖獎勵!",
isHiddenOnJoin = true,
isAlignedToStreakResetTime = true,
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "冰矛",
requiredDaysVisitedStreak = 1,
},
-- 更多
變量類型描述默認值必需
isHiddenOnJoin布林當為真時,獎勵在加入遊戲時不會自動彈出。當為假時,如果玩家有新的每日獎勵可領取,獎勵會在加入遊戲時自動彈出。
isAlignedToStreakResetTime布林當為真時,第二天的獎勵可以在首次可領取的第一天的 24 小時後領取。當為假時,第二天的獎勵可以在第一天可領取時間的第一個午夜領取。例如,如果玩家在晚上 11:00 登錄並領取他們的第一天獎勵,則為真意味著他們必須等到第二天的晚上 11:00 才能領取第二天的獎勵。為假則意味著他們可以在午夜 12:00 領取第二天的獎勵,晚了一小時。第三天及以後的獎勵始終在前一天的可領取時間後 24 小時可用。

自定義 UI

在上一節中,您可能注意到 tabDisplayNametabOrderdescription 字段,這些字段允許對用戶界面進行基本自定義。您還可以在 ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings 中找到一些 UI 字串。

  • 要使用 effect 變量指定新的獎勵背景,請將框架添加到 ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames。然後將框架的名稱添加到 ReplicatedStorage.EngagementRewards.Configs.Types 中的 Types.RewardEffect 表中。

  • 要進行更全面的自定義,請修改 ReplicatedStorage.EngagementRewards.Objects 中的對象。例如,您可能會修改 RewardsHudButton.Background 框架的 BackgroundColor3FooterContentFrame.ClaimableUIGradientColor

  • 用戶界面的入口點是 ReplicatedStorage.EngagementRewards.Client.UIController 腳本,該腳本獲取必要的對象並初始化 UI。如果您添加或重命名頂級對象(而不是僅添加子對象或修改屬性),則可能需要更新此文件夾中的代碼以處理它們。

©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。