ContentProvider

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Assistenza
Non Replicato

Servizio che carica contenuti (risorse) in un Gioco.

I server di Roblox trasmettono tutte le risorse al client durante l'Tempo esecuzione: oggetti nell'area di lavoro, risorse mesh, risorse texture, ecc.Risorse come dati visivi in mesh, texture, decali e suoni vengono trasmesse come richiesto, indipendentemente dal fatto che Streaming sia abilitato.

In alcuni casi, questo comportamento non è desiderabile, poiché può causare un ritardo prima che il contenuto carichi nell'esperienza.

ContentProvider ti consente di precaricare le risorse in un'esperienza utilizzando il metodo ContentProvider:PreloadAsync().Potresti voler visualizzare una schermata di caricamento, precaricare risorse critiche e consentire al giocatore solo allora di entrare nell'esperienza.

Migliori pratiche per il preloading

  • Solo preload risorse essenziali, non l'intera Workspace .Potresti ricevere occasionalmente pop-in, ma riduce i tempi di caricamento e in generale non interrompe l'esperienza del giocatore.Le risorse che sono buoni candidati per il preloading includono quelle richieste per la schermata di caricamento, l'interfaccia utente o l'area di partenza.
  • Lascia che i giocatori saltino lo schermo di caricamento, o lo saltino automaticamente dopo un certo periodo di tempo.

Campioni di codice

In questo esempio un Decal e un Suono vengono pre-caricati in un gioco. Una volta terminato il caricamento verrà stampato un messaggio sull'output.

Provider di contenuti

local ContentProvider = game:GetService("ContentProvider")
local LOGO_ID = "rbxassetid://658743164"
local PAGE_TURN_ID = "rbxassetid://12222076"
local decal = Instance.new("Decal")
decal.Texture = LOGO_ID
local sound = Instance.new("Sound")
sound.SoundId = PAGE_TURN_ID
local assets = { decal, sound }
ContentProvider:PreloadAsync(assets)
print("All assets loaded.")

Sommario

Proprietà

Metodi

Proprietà

BaseUrl

Sola Lettura
Non Replicato
Lettura Parallela

RequestQueueSize

Sola Lettura
Non Replicato
Lettura Parallela

Campioni di codice

ContentProvider Loading Bar

local ContentProvider = game:GetService("ContentProvider")
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local playerGui = localPlayer:WaitForChild("PlayerGui")
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = playerGui
-- create a basic loading bar
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0.5, 0, 0.1, 0)
frame.Position = UDim2.new(0.5, 0, 0.5, 0)
frame.AnchorPoint = Vector2.new(0.5, 0.5)
frame.Parent = screenGui
local bar = Instance.new("Frame")
bar.Size = UDim2.new(0, 0, 1, 0)
bar.Position = UDim2.new(0, 0, 0, 0)
bar.BackgroundColor3 = Color3.new(0, 0, 1)
bar.Parent = frame
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://9120386436"
local sound2 = Instance.new("Sound")
sound2.SoundId = "rbxassetid://9120385974"
local assets = {
sound,
sound2,
}
task.wait(3)
for i = 1, #assets do
local asset = assets[i]
ContentProvider:PreloadAsync({ asset }) -- 1 at a time, yields
local progress = i / #assets
bar.Size = UDim2.new(progress, 0, 1, 0)
end
print("loading done")

Metodi

GetAssetFetchStatus

Parametri

contentId: ContentId
Valore predefinito: ""

Restituzioni

Campioni di codice

Monitoraggio dello stato di AssetFetch

local ContentProvider = game:GetService("ContentProvider")
-- Un esempio di risorsa da caricare
local ASSET_ID = "rbxassetid://9120386436"
local exampleAsset = Instance.new("Sound")
exampleAsset.SoundId = ASSET_ID
-- Esporta l'attuale AssetFetchStatus dell'asset
local initialAssetFetchStatus = ContentProvider:GetAssetFetchStatus(ASSET_ID)
print("Initial AssetFetchStatus:", initialAssetFetchStatus)
-- Ascolta gli aggiornamenti
local assetFetchStatusChangedSignal = ContentProvider:GetAssetFetchStatusChangedSignal(ASSET_ID)
local function onAssetFetchStatusChanged(newAssetFetchStatus: Enum.AssetFetchStatus)
print(`New AssetFetchStatus: {newAssetFetchStatus}`)
end
assetFetchStatusChangedSignal:Connect(onAssetFetchStatusChanged)
-- Attiva l'asset per preload
local function onAssetRequestComplete(contentId: string, assetFetchStatus: Enum.AssetFetchStatus)
print(`Preload status {contentId}: {assetFetchStatus.Name}`)
end
ContentProvider:PreloadAsync({ exampleAsset }, onAssetRequestComplete)

GetAssetFetchStatusChangedSignal

Parametri

contentId: ContentId
Valore predefinito: ""

Restituzioni

Campioni di codice

Monitoraggio dello stato di AssetFetch

local ContentProvider = game:GetService("ContentProvider")
-- Un esempio di risorsa da caricare
local ASSET_ID = "rbxassetid://9120386436"
local exampleAsset = Instance.new("Sound")
exampleAsset.SoundId = ASSET_ID
-- Esporta l'attuale AssetFetchStatus dell'asset
local initialAssetFetchStatus = ContentProvider:GetAssetFetchStatus(ASSET_ID)
print("Initial AssetFetchStatus:", initialAssetFetchStatus)
-- Ascolta gli aggiornamenti
local assetFetchStatusChangedSignal = ContentProvider:GetAssetFetchStatusChangedSignal(ASSET_ID)
local function onAssetFetchStatusChanged(newAssetFetchStatus: Enum.AssetFetchStatus)
print(`New AssetFetchStatus: {newAssetFetchStatus}`)
end
assetFetchStatusChangedSignal:Connect(onAssetFetchStatusChanged)
-- Attiva l'asset per preload
local function onAssetRequestComplete(contentId: string, assetFetchStatus: Enum.AssetFetchStatus)
print(`Preload status {contentId}: {assetFetchStatus.Name}`)
end
ContentProvider:PreloadAsync({ exampleAsset }, onAssetRequestComplete)

ListEncryptedAssets


Restituzioni

RegisterDefaultEncryptionKey

()

Parametri

encryptionKey: string
Valore predefinito: ""

Restituzioni

()

RegisterDefaultSessionKey

()

Parametri

sessionKey: string
Valore predefinito: ""

Restituzioni

()

RegisterEncryptedAsset

()

Parametri

assetId: ContentId
Valore predefinito: ""
encryptionKey: string
Valore predefinito: ""

Restituzioni

()

RegisterSessionEncryptedAsset

()

Parametri

contentId: ContentId
Valore predefinito: ""
sessionKey: string
Valore predefinito: ""

Restituzioni

()

UnregisterDefaultEncryptionKey

()

Restituzioni

()

UnregisterEncryptedAsset

()

Parametri

assetId: ContentId
Valore predefinito: ""

Restituzioni

()

PreloadAsync

()
Resa

Parametri

contentIdList: Array
Valore predefinito: ""
callbackFunction: function
Valore predefinito: "nil"

Restituzioni

()

Campioni di codice

Caricamento anticipato delle risorse

local ContentProvider = game:GetService("ContentProvider")
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://9120386436"
local decal = Instance.new("Decal")
decal.Texture = "rbxassetid://5447528495"
local assets = {
decal,
sound,
}
-- Questo verrà colpito ogni volta che ogni risorsa si risolve
local callback = function(assetId, assetFetchStatus)
print("PreloadAsync() resolved asset ID:", assetId)
print("PreloadAsync() final AssetFetchStatus:", assetFetchStatus)
end
-- Carica in anticipo il contenuto e il tempo
local startTime = os.clock()
ContentProvider:PreloadAsync(assets, callback)
local deltaTime = os.clock() - startTime
print(("Preloading complete, took %.2f seconds"):format(deltaTime))

Eventi

AssetFetchFailed

Parametri

assetId: ContentId