学习
引擎类
AdService
无法创建
服务

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处


概要
方法
GetAdAvailabilityNowAsync(adFormat: Enum.AdFormat):GetAdAvailabilityNowResult
GetCampaignEligibilityAsync(campaignId: string,player: Player?):GetCampaignEligibilityResult
RegisterAdOpportunityAsync(instance: Instance,placementId: number?):()
RegisterDisclosureButton(disclosureButton: GuiButton,adIntegrationPlacementId: string):()
ShowVideoAd():()
已弃用
活动
继承成员

API 参考
方法
CreateAdRewardFromDevProductId
功能: Monetization
AdService:CreateAdRewardFromDevProductId(devProductId:number):AdReward
参数
devProductId:number
返回

GetAdAvailabilityNowAsync
暂停
功能: Monetization
AdService:GetAdAvailabilityNowAsync(adFormat:Enum.AdFormat):GetAdAvailabilityNowResult
参数
adFormat:Enum.AdFormat
返回
GetAdAvailabilityNowResult

GetCampaignEligibilityAsync
暂停
功能: Monetization
AdService:GetCampaignEligibilityAsync(
campaignId:string, player:Player?
):GetCampaignEligibilityResult
参数
campaignId:string
player:Player?
默认值:"nil"
返回
GetCampaignEligibilityResult
代码示例
示例广告集成
local AdService = game:GetService("AdService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local YOUR_CAMPAIGN_ID = "123" -- 在这里输入您的广告集成活动 ID。
local AD_INTEGRATION_IDS = {
-- 输入您为广告集成活动注册的每个资产的广告集成投放 ID。
BrandedBuilding = "abc-123",
BrandedScreenGui = "xyz-789",
}
-- 验证 LocalPlayer 是否有资格查看您的活动
local success, result = pcall(function()
return AdService:GetCampaignEligibilityAsync(YOUR_CAMPAIGN_ID)
end)
if success and result.IsEligible then
-- 所有广告集成资产默认应隐藏。一旦您知道
-- 玩家有资格,则可以安全地开始显示广告集成资产。
local brandedBuildingModel = ReplicatedStorage.adIntegration.building
local brandedBuildingModelDisclosureBillboardGui = brandedBuildingModel.disclosureBillboardGui
-- 别忘了注册您的广告披露按钮,让玩家知道谁在为广告付费!
AdService:RegisterDisclosureButton(
brandedBuildingModelDisclosureBillboardGui.adDisclosureButton,
AD_INTEGRATION_IDS.BrandedBuilding
)
brandedBuildingModelDisclosureBillboardGui.Parent = Players.LocalPlayer.PlayerGui
brandedBuildingModel.Parent = game.Workspace
local brandedScreenGui = ReplicatedStorage.adIntegration.screenGui
AdService:RegisterDisclosureButton(brandedScreenGui.adDisclosureButton, AD_INTEGRATION_IDS.BrandedScreenGui)
brandedScreenGui.Parent = Players.LocalPlayer.PlayerGui
end

RegisterAdOpportunityAsync
暂停
功能: Monetization
AdService:RegisterAdOpportunityAsync(
instance:Instance, placementId:number?
):()
参数
instance:Instance
placementId:number?
返回
()
代码示例
跟踪广告机会
local AdService = game:GetService("AdService")
local playerGui = game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui")
-- 创建 ScreenGui 和按钮
local screenGui = Instance.new("ScreenGui", playerGui)
local adButton = Instance.new("TextButton", screenGui)
-- 使用 AdService 注册按钮
local success, err = pcall(function()
--第二个参数是 Creator Hub 中生成的可选 Placement ID(数字)参数。
-- 如果您选择不提供 Placement ID,则广告机会将在默认位置下跟踪。
AdService:RegisterAdOpportunityAsync(adButton, 1234567891234567)
end)
if not success then
warn("注册广告机会失败:", err)
end

RegisterDisclosureButton
功能: Monetization
AdService:RegisterDisclosureButton(
disclosureButton:GuiButton, adIntegrationPlacementId:string
):()
参数
disclosureButton:GuiButton
adIntegrationPlacementId:string
返回
()

ShowRewardedVideoAdAsync
暂停
功能: UI, Monetization
AdService:ShowRewardedVideoAdAsync(
player:Player, reward:AdReward, placementId:number?
参数
player:Player
reward:AdReward
placementId:number?
代码示例
显示奖励视频广告
-- 在客户端的脚本中:
local AdService = game:GetService("AdService")
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local rewardedVideoButton: GuiButton =
Players.LocalPlayer.PlayerGui:WaitForChild("myAdGui"):WaitForChild("watchRewardedVideoButton")
local watchRewardedVideoAdRemoteEvent: RemoteEvent = ReplicatedStorage:WaitForChild("watchRewardedVideoAd")
-- 客户端还没有广告准备好;隐藏按钮
rewardedVideoButton.Visible = false
local success, result = pcall(function()
return AdService:GetAdAvailabilityNowAsync(Enum.AdFormat.RewardedVideo)
end)
if success and result.AdAvailabilityResult == Enum.AdAvailabilityResult.IsAvailable then
-- 如果有广告可用,则显示按钮
rewardedVideoButton.Visible = true
end
rewardedVideoButton.Activated:Connect(function()
watchRewardedVideoAdRemoteEvent:FireServer()
-- IsAvailable 结果仅对单个广告播放有效。要播放另一个广告,您必须调用
-- GetAdAvailabilityNowAsync 并再次检查可用性。
rewardedVideoButton.Visible = false
end)
-- 在服务器的脚本中:
local AdService = game:GetService("AdService")
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local watchRewardedVideoAdRemoteEvent: RemoteEvent = ReplicatedStorage:WaitForChild("watchRewardedVideoAd")
local REWARDED_VIDEO_PRODUCT_ID = 123 -- 在这里输入您的开发产品 ID
local function grantReward(player: Player)
print(`给予奖励给 {player.Name}!`)
end
MarketplaceService.ProcessReceipt = function(receiptInfo)
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if not player then
return Enum.ProductPurchaseDecision.NotProcessedYet
end
if receiptInfo.ProductId == REWARDED_VIDEO_PRODUCT_ID then
if receiptInfo.ProductPurchaseChannel == Enum.ProductPurchaseChannel.AdReward then
print(`玩家 {receiptInfo.PlayerId} 通过观看广告获得了我的奖励视频奖励`)
else
print(`玩家 {receiptInfo.PlayerId} 用 Robux 购买了我的奖励视频产品`)
end
-- 给玩家他们的奖励
grantReward(player)
else
-- 处理其他产品
end
return Enum.ProductPurchaseDecision.PurchaseGranted
end
watchRewardedVideoAdRemoteEvent.OnServerEvent:Connect(function(player)
local reward = AdService:CreateAdRewardFromDevProductId(REWARDED_VIDEO_PRODUCT_ID)
AdService:ShowRewardedVideoAdAsync(player, reward)
end)

ShowVideoAd
已弃用

UnregisterAdOpportunity
功能: Monetization
AdService:UnregisterAdOpportunity(instance:Instance):()
参数
instance:Instance
返回
()

活动
VideoAdClosed
已弃用

©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。