ContentProvider

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável
Serviço
Não replicado

Serviço que carrega conteúdo (ativos) em um jogo.

Os servidores do Roblox transmitem todos os recursos ao cliente em tempo de execução: objetos no Workspacede Trabalho, recursos de malha, recursos de textura, etc.Recursos como dados visuais em malha, texturas, decalques e sons são transmitidos conforme necessário, independentemente de se o Streaming estiver ativado.

Em alguns casos, esse comportamento é indesejável, pois pode levar a um atraso antes que o conteúdo carregue na experiência.

ContentProvider Permite que você carregue recursos em uma experiência usando o método ContentProvider:PreloadAsync().Você pode querer exibir uma tela de carregamento, pré-carregar recursos críticos e, somente então, permitir que o jogador entre na experiência.

Melhores Práticas para Pré-carregamento

  • Apenas pré-carregue recursos essenciais, não o inteiro Workspace.Você pode receber pop-ins ocasionais, mas isso diminui os tempos de carregamento e geralmente não interrompe a experiência do jogador.Recursos que são bons candidatos para pré-carregamento incluem aqueles necessários para a tela de carregamento, a interface do usuário ou a área de início.
  • Deixe os jogadores pular a tela de carregamento ou pulem automaticamente após um determinado período de tempo.

Amostras de código

In this example a Decal and Sound are preloaded into a game. Once they have finished loading the script will print a message to the output.

ContentProvider

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.")

Resumo

Propriedades

Métodos

Propriedades

BaseUrl

Somente leitura
Não replicado
Ler Parallel

Usado pelo ContentProvider para baixar recursos do site do Roblox.

Este URL aponta para um site hospedado do Roblox a partir do qual recursos são baixados e são extraídos do arquivo AppSettings.xml, localizado na pasta de hash de versão.

É possível substituir essa propriedade usando a função ContentProvider:SetBaseUrl() na barra de comando; no entanto, isso não é recomendado e pode causar problemas de carregamento de recursos.

RequestQueueSize

Somente leitura
Não replicado
Ler Parallel

Dá o número de itens na fila de solicitações ContentProvider que precisam ser baixados.

Itens são adicionados à fila de solicitações do cliente quando um recurso é usado pela primeira vez ou ContentProvider:PreloadAsync().

Aconselha-se aos desenvolvedores que não usem o RequestQueueSize para criar barras de carregamento.Isso ocorre porque o tamanho da fila pode aumentar e diminuir ao longo do tempo à medida que novos recursos são adicionados e baixados.Desenvolvedores que desejam exibir o progresso de carregamento devem carregar recursos um por vez (veja exemplo abaixo).

Amostras de código

This code sample demonstrates how ContentProvider:PreloadAsync() can be used to create a simple loading bar in a game, by loading the assets one at a time.

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")

Métodos

GetAssetFetchStatus

Obtém o atual Enum.AssetFetchStatus da contentId fornecida. Use GetAssetFetchStatusChangedSignal() para ouvir mudanças neste valor.

Parâmetros

contentId: ContentId

O ID do conteúdo para obter o status.

Valor Padrão: ""

Devolução

Amostras de código

Retrieves the initial Enum.AssetFetchStatus of an asset and listens for future updates.

Monitoring AssetFetchStatus

local ContentProvider = game:GetService("ContentProvider")
-- An example asset to load
local ASSET_ID = "rbxassetid://9120386436"
local exampleAsset = Instance.new("Sound")
exampleAsset.SoundId = ASSET_ID
-- Output the current AssetFetchStatus of the asset
local initialAssetFetchStatus = ContentProvider:GetAssetFetchStatus(ASSET_ID)
print("Initial AssetFetchStatus:", initialAssetFetchStatus)
-- Listen for updates
local assetFetchStatusChangedSignal = ContentProvider:GetAssetFetchStatusChangedSignal(ASSET_ID)
local function onAssetFetchStatusChanged(newAssetFetchStatus: Enum.AssetFetchStatus)
print(`New AssetFetchStatus: {newAssetFetchStatus}`)
end
assetFetchStatusChangedSignal:Connect(onAssetFetchStatusChanged)
-- Trigger the asset to preload
local function onAssetRequestComplete(contentId: string, assetFetchStatus: Enum.AssetFetchStatus)
print(`Preload status {contentId}: {assetFetchStatus.Name}`)
end
ContentProvider:PreloadAsync({ exampleAsset }, onAssetRequestComplete)

GetAssetFetchStatusChangedSignal

Um sinal que dispara quando o Enum.AssetFetchStatus do conteúdo fornecido muda.Conecte-se a este sinal usando um retorno de chamada com um argumento do tipo Enum.AssetFetchStatus .Isso é particularmente útil para recursos que podem se atualizar automaticamente, como a miniatura de um usuário quando ele muda de roupa.

Parâmetros

contentId: ContentId
Valor Padrão: ""

Devolução

Amostras de código

Retrieves the initial Enum.AssetFetchStatus of an asset and listens for future updates.

Monitoring AssetFetchStatus

local ContentProvider = game:GetService("ContentProvider")
-- An example asset to load
local ASSET_ID = "rbxassetid://9120386436"
local exampleAsset = Instance.new("Sound")
exampleAsset.SoundId = ASSET_ID
-- Output the current AssetFetchStatus of the asset
local initialAssetFetchStatus = ContentProvider:GetAssetFetchStatus(ASSET_ID)
print("Initial AssetFetchStatus:", initialAssetFetchStatus)
-- Listen for updates
local assetFetchStatusChangedSignal = ContentProvider:GetAssetFetchStatusChangedSignal(ASSET_ID)
local function onAssetFetchStatusChanged(newAssetFetchStatus: Enum.AssetFetchStatus)
print(`New AssetFetchStatus: {newAssetFetchStatus}`)
end
assetFetchStatusChangedSignal:Connect(onAssetFetchStatusChanged)
-- Trigger the asset to preload
local function onAssetRequestComplete(contentId: string, assetFetchStatus: Enum.AssetFetchStatus)
print(`Preload status {contentId}: {assetFetchStatus.Name}`)
end
ContentProvider:PreloadAsync({ exampleAsset }, onAssetRequestComplete)

ListEncryptedAssets


Devolução

RegisterDefaultEncryptionKey

()

Parâmetros

encryptionKey: string
Valor Padrão: ""

Devolução

()

RegisterDefaultSessionKey

()

Parâmetros

sessionKey: string
Valor Padrão: ""

Devolução

()

RegisterEncryptedAsset

()

Parâmetros

assetId: ContentId
Valor Padrão: ""
encryptionKey: string
Valor Padrão: ""

Devolução

()

RegisterSessionEncryptedAsset

()

Parâmetros

contentId: ContentId
Valor Padrão: ""
sessionKey: string
Valor Padrão: ""

Devolução

()

UnregisterDefaultEncryptionKey

()

Devolução

()

UnregisterEncryptedAsset

()

Parâmetros

assetId: ContentId
Valor Padrão: ""

Devolução

()

PreloadAsync

()
Rendimentos

Produz até que todos os recursos associados ao dado Instances tenham sido carregados.Isso pode ser usado para pausar um script e não usar conteúdo até que seja certo que o conteúdo foi carregado na experiência.

Ao ser chamado, o motor identifica links para conteúdo para cada item na lista.Para qualquer um dos Instances que tem propriedades que definem links para conteúdo, como um Decal ou um Sound, o motor tenta carregar esses recursos do Roblox.Para cada ativosolicitado, a função de retorno é executada, indicando o recurso final Enum.AssetFetchStatus .

Se algum dos recursos não carregar, uma mensagem de erro aparece na saída.O próprio método não irá errar e continuará a executar até ter processado cada instância solicitada.

Limitações

SurfaceAppearance e MaterialVariant não são suportados por PreloadAsync() porque esses objetos dependem de recursos de pacote de textura processados, em vez de carregar diretamente texturas individuais.Chamá-lo em uma instância SurfaceAppearance não fará nada, mas as texturas associadas ainda serão transmitidas durante a tempo de execução.

Parâmetros

contentIdList: Array

Um conjunto de instâncias para carregar.

Valor Padrão: ""
callbackFunction: function

A função chamada quando cada solicitação de recurso é concluída. Retorna a string content e o ativofinal Enum.AssetFetchStatus da entidade.

Valor Padrão: "nil"

Devolução

()

Amostras de código

Neste exemplo de código, um som e uma textura são pré-carregados usando Sound e Decal instâncias.

Pré-carregando Recursos

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,
}
-- Isso será atingido à medida que cada recurso se resolve
local callback = function(assetId, assetFetchStatus)
print("PreloadAsync() resolved asset ID:", assetId)
print("PreloadAsync() final AssetFetchStatus:", assetFetchStatus)
end
-- Pré-carregue o conteúdo e o tempo
local startTime = os.clock()
ContentProvider:PreloadAsync(assets, callback)
local deltaTime = os.clock() - startTime
print(("Preloading complete, took %.2f seconds"):format(deltaTime))

Eventos

AssetFetchFailed

Parâmetros

assetId: ContentId