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

Servicio que carga el contenido (los recursos) en un juego.

Los servidores de Roblox transmiten todos los recursos al cliente en tiempo de ejecución: objetos en el espacio de trabajo, imágenes en malla, recursos de textura, etc. Los recursos, como los datos visuales de malla, las texturas, las calcomanías y los sonidos, se transmiten en función de lo requerido, independientemente de si se habilita Transmisión o no.

En algunos casos, este comportamiento no es deseable, ya que puede causar un retraso antes de que el contenido se cargue en la experiencia.

ContentProvider le permite previsualizar los elementos de una experiencia con el método ContentProvider:PreloadAsync(). Es posible que desee mostrar una pantalla de carga, previsualizar los elementos críticos y solo entonces permitir que el jugador ingrese a la experiencia.

Mejores prácticas para precomprimir

  • Solo precargue los elementos esenciales, no el espacio de trabajo entero. Puedes obtener pop-in ocasionales, pero reduce los tiempos de carga y generalmente no molesta la experiencia del jugador. Los elementos que son buenos candidatos para precargar incluyen los requeridos para la pantalla de carga, la interfaz de usuario o la zona de inicio.
  • Deje que los jugadores se salten la pantalla de carga, o salten automáticamente después de un cierto tiempo.

Amostras de código

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 por el ContentProvider para descargar recursos del sitio web de Roblox.

Esta URL apunta a un sitio web de Roblox alojado en el que se descargan y se extraen los recursos del archivo AppSettings.xml, ubicado en la carpeta de archivos de versión.

Es posible sobrescribir esta propiedad usando la función ContentProvider:SetBaseUrl() en la barra de comandos; sin embargo, esto no se recomienda y puede causar problemas de carga de activos.

RequestQueueSize

Somente leitura
Não replicado
Ler Parallel

Da el número de artículos en la ContentProvider solicitud de cola que necesita ser descargado.

Los elementos se agregan a la cola de solicitudes del cliente cuando se usa un activo por primera vez o ContentProvider:PreloadAsync() es llamado.

A los desarrolladores no se recomienda usar RequestQueueSize para crear barras de carga. Esto se debe a que el tamaño de la cola puede aumentar y disminuir con el tiempo a medida que se agregan y se descargan nuevos recursos. Los desarrolladores que buscan mostrar el progreso de la carga deben cargar recursos uno a la vez (ver ejemplo a continuación).

Amostras de código

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

Obtiene el estado actual de Enum.AssetFetchStatus de contentId proporcionado. Usa GetAssetFetchStatusChangedSignal() para escuchar cambios en este valor.

Parâmetros

contentId: ContentId

La ID de la información para recuperar el estado.


Devolução

Amostras de código

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

Una señal que se activa cuando el estado de Enum.AssetFetchStatus de la información proporcionada cambia. Conectarse a esta señal usando un retorno de llamada con un argumento de tipo Enum.AssetFetchStatus . Esto es particularmente útil para las imágenes de miniatura de un usuario cuando cambia de ropa.

Parâmetros

contentId: ContentId

Devolução

Amostras de código

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

void

Parâmetros

encryptionKey: string

Devolução

void

RegisterDefaultSessionKey

void

Parâmetros

sessionKey: string

Devolução

void

RegisterEncryptedAsset

void

Parâmetros

assetId: ContentId
encryptionKey: string

Devolução

void

RegisterSessionEncryptedAsset

void

Parâmetros

contentId: ContentId
sessionKey: string

Devolução

void

UnregisterDefaultEncryptionKey

void

Devolução

void

UnregisterEncryptedAsset

void

Parâmetros

assetId: ContentId

Devolução

void

PreloadAsync

void
Rendimentos

Suspensiones hasta que se hayan cargado todos los recursos asociados con el Instances dado. Esto se puede usar para pausar un script y no usar el contenido hasta que se asegure de que el contenido se ha cargado en la experiencia.

Cuando se llama, el motor identifica enlaces a contenido para cada artículo en la lista. Para cualquier de los Instances que tienen propiedades que definen enlaces a contenido, como un Decal o un Sound, el motor intenta cargar estas herramientas desde Roblox

Este método también puede tomar una lista de ID de contenido, sin embargo, estas cadenas deben coincidir con imágenes assets. Intenta cargar no-image assets a través del uso de sus cadenas de ID de contenido resultará en el fracaso.

Si alguno de los recursos no se cargar, se muestra un mensaje de error en la Salida. El método en sí mismo no fallará y continuará ejecutando hasta que haya procesado cada instancia o ID de recursos solicitados.

Parâmetros

contentIdList: Array

Un arreglo de instancias o cadenas de ID de contenido (para las imágenes) para cargar.

callbackFunction: function

La función se llama cuando cada solicitud de activo se complete. Re返 el content ст링 y el estado final recurso's Enum.AssetFetchStatus .

Valor Padrão: "nil"

Devolução

void

Amostras de código

Preloading Assets

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,
}
-- This will be hit as each asset resolves
local callback = function(assetId, assetFetchStatus)
print("PreloadAsync() resolved asset ID:", assetId)
print("PreloadAsync() final AssetFetchStatus:", assetFetchStatus)
end
-- Preload the content and time it
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