季票包

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

季票功能包提供即時功能,以創建限時的基於任務的進度系統,玩家可以完成任務目標以獲得僅在預定時間內可用的獎勵。使用該包的自定義選項,您可以個性化所有季票,以向您的觀眾提供新內容,促進玩家留存並產生收入。

獲取包

創作者商店工具箱的一個選項卡,您可以使用它來查找所有由Roblox和Roblox社區製作的資產,以便在您的項目中使用,包括模型、圖像、網格、音頻、插件、視頻和字體資產。您可以使用創作者商店將一個或多個資產直接添加到打開的遊戲中,包括功能包!

每個功能包都需要核心功能包才能正常運行,而季票包則需要任務功能包來定義季節的任務。一旦所有三個包資產都在您的庫存中,您可以在平台上的任何項目中重複使用它們。

要將包從您的庫存中放入遊戲:

  1. 從Studio的窗口菜單或主頁選項卡工具欄中,打開工具箱

  2. 工具箱窗口中,單擊庫存選項卡。顯示我的模型排序。

    Studio的工具箱窗口,庫存選項卡突出顯示。
  3. 單擊功能包核心圖塊、任務功能包圖塊,然後是季票功能包圖塊。所有三個包文件夾將顯示在資源管理器窗口中。

  4. 將包文件夾拖入ReplicatedStorage

  5. 允許數據存儲調用以跟踪玩家使用包的購買情況。

    1. 打開Studio的文件體驗設置窗口。
    2. 轉到安全性選項卡,然後啟用啟用Studio訪問API服務

配置任務依賴

為了使季節正常運行,您必須添加邏輯,以便季票功能包可以跟踪玩家進度並更新其UI組件。為了簡化,下面的示例使用任務功能包,並在玩家完成任務後調用SeasonPasses.addProgressToSeason(),但您可以根據自己的喜好跟踪玩家進度。無論您是否定義任務,您仍然必須將任務功能包添加到您的遊戲中,以便季票代碼正常運行。

任務各自都有一組必須完成的任務、配置選項和可選的顯示元數據。要獲取有關如何配置任務及其任務的詳細指南,請參見定義任務

從任務中添加XP到季節

此示例使用任務功能包來定義玩家可以完成的任務,以獲得經驗值 (XP) 並在季節中進展。要在玩家完成定義的任務時獎勵他們XP,您必須在ReplicatedStorage.Missions.Server.Examples.MissionsExample服務器腳本中添加邏輯,以便它可以導入季票數據並根據他們的進度獎勵玩家。

local SeasonPasses = require(ReplicatedStorage.SeasonPasses.Server.SeasonPasses)
local function completeHandler(player: Player, missionId: Types.MissionId)
print(`{player} 完成了任務 {missionId}`)
if missionId == "Walking" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking2" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking3" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Availability" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Manual" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Minutely" then
SeasonPasses.addProgressToSeason(player, 100)
end
end

添加季節層級獎勵圖標

除了在玩家完成任務時授予XP外,季票功能包還使用任務功能包來定義季節內的獨特獎勵層級。如果您想為玩家可以獲得的層級獎勵添加屏幕圖標,請在每個季節層級獎勵的Missions配置中添加資產ID。

Tier3Mission = {
categoryId = "General",
metadata = {
displayName = "第3層任務",
description = "跳10次",
visibleAfterComplete = true,
visibleBeforeUnlocked = true,
rewards = {
{
icon = 16826775737,
displayName = "物品",
},
{
icon = 106912146245070,
displayName = "季節XP",
},
},
},
}

配置季節

在您設置好要包含在季節中的每個任務後,是時候配置季票本身。在ReplicatedStorage.SeasonPasses.Configs.Season中,有一個季節配置的示例供您參考,以下代碼示例來自該文件。

定義通行證

通行證允許您向玩家收取一次性Robux費用,以便訪問季票的任務和潛在獎勵。在您創建具有唯一資產ID的通行證後,您可以在季節的premiumTrack字段中設置通行證的詳細信息。 例如,以下代碼示例定義了一個通行證,示例資產ID為928192647,用於表示季票,然後將季票的跟蹤名稱設置為“高級跟蹤”。

premiumTrack = {
pricing = {
gamePassId = 928192647,
},
trackMetadata = {
trackName = "高級跟蹤",
},
},

配置層級和獎勵

季節層級代表玩家必須達到的里程碑,以便在整個季節中獲得獎勵。要提升層級,玩家需要完成任務以獲得XP,當他們獲得足夠的XP時,他們將晉級到下一層並獲得剛完成的層級的獎勵。 層級具有upperBoundXP屬性,設置獲得層級獎勵所需的XP閾值。每個層級可以提供兩種類型的獎勵:

  • 免費 - 玩家可以在不購買季票的情況下獲得的獎勵。
  • 高級 - 玩家只能通過購買季票來獲得的獎勵。

為了演示,請查看以下代碼示例,該示例顯示一個層級需要100 XP以獲得免費的冰矛獎勵和高級的爆炸護盾獎勵。icon是顯示獎勵的UI圖像的資產ID,displayName顯示獎勵的名稱。請注意,displayName在UI中顯示,但rewardId對玩家隱藏,主要用於數據存儲目的。

tiers = {
[1] = {
upperBoundXP = 100,
freeReward = {
icon = 128181721602852,
displayName = "冰矛",
rewardId = "iceLance",
},
premiumReward = {
icon = 95882371958115,
displayName = "爆炸護盾",
rewardId = "blastShield",
},
},
}

雖然此腳本是為了說明如何一次配置一個層級,但大多數季節包括多個層級。在為季節定義多個層級和獎勵時,請確保每個rewardId是數字並按遞增順序排列,以便您的層級按您在層級列表中定義的順序顯示。

定義季節詳細信息

現在您擁有一個具有層級和獎勵的季票,是時候定義您季節的詳細信息:

  • title - 您季節的名稱。
  • description - 您季節的描述。
  • startUtc - 季節開始的協調世界時間。
  • endUtc - 季節結束的協調世界時間。
  • seasonId - 讓您跟踪玩家在給定季節中獲得的XP。

該包使用startUtcendUtc來顯示季節的倒計時。

startUtc = DateTime.fromUniversalTime(2024, 10, 01, 17, 0, 0),
endUtc = DateTime.fromUniversalTime(2025, 2, 28, 17, 0, 0),
title = "季節 1",
description = "進入太空城市",
seasonId = "season1",

整合服務器邏輯

查看ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample,該示例顯示您的服務器將如何與季票功能包互動。以下代碼片段來自該腳本。

您主要需要創建一個處理函數,用於向玩家授予已聲明的獎勵。例如,以下代碼示例創建了一個rewardClaimedHandlerFunction()函數,跟踪玩家進入下一層時,然後根據他們是否購買了季票來獎勵他們免費獎勵或免費和高級獎勵。

出於您的目的,請將task.wait()調用替換為允許玩家獲得他們在季節中聲明的獎勵的邏輯。此函數必須返回一個布爾值:如果服務器授予了獎勵則為true,否則為false。

local function rewardClaimedHandlerFunction(_player: Player, _rewardId: Types.RewardId): boolean
task.wait(2)
return true
end
local function initializeRewardClaimedHandlers()
for tierId, tier in pairs(Season.tiers) do
if tier then
if tier.freeReward then
SeasonPasses.setRewardClaimedHandler(tier.freeReward.rewardId, rewardClaimedHandlerFunction)
end
if tier.premiumReward then
SeasonPasses.setRewardClaimedHandler(tier.premiumReward.rewardId, rewardClaimedHandlerFunction)
end
end
end
end

配置常量

核心功能包的常量位於兩個位置:

  • 共享常量位於ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants
  • 包特定常量,在這種情況下是季票功能包,位於ReplicatedStorage.SeasonPasses.Configs.Constants。 您可能想要調整的主要內容以滿足遊戲的設計要求:
  • 音效資產ID
  • 購買效果持續時間和粒子顏色 此外,您可以在一個位置找到用於翻譯的字符串:ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings

自定義UI組件

通過修改包對象,例如顏色、字體和透明度,您可以調整季票提示的視覺呈現。然而,請記住,如果您在層次結構中移動任何對象,代碼將無法找到它們,您需要對代碼進行調整。

一個季節由以下高級組件組成,這些組件以編程方式添加到任務功能包的UI組件中:

  • SeasonBottomFrame – 包含有關每個軌道的信息、層級獎勵的滾動框架和層級數據的框架。
  • SeasonDescriptionFrame - 在標題中顯示季節標題、描述和倒計時的框架。
  • TierRewardFrame - 顯示特定層級獎勵的框架。
  • TierProgressFrame - 顯示玩家在當前層級上所取得進展的框架。
  • PurchaseFrame - 提示玩家購買高級通行證的框架。
  • SeasonProgressFrame - 顯示玩家在整個季節中的進度條的框架。
  • RewardsButtonFrame - 添加一個按鈕的框架,允許通過SeasonBottomFrame顯示季節的信息。
©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。