ContentProvider

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable
Servicio
No replicado

Servicio que carga contenido (activos) en un juego.

Los servidores de Roblox transmiten todos los recursos al cliente en tiempo de ejecución: objetos en el espacio de trabajo, recursos de malla, recursos de textura, etc.Los recursos como los datos visuales de malla, las texturas, las decoraciones y los sonidos se transmiten según lo requerido, independientemente de si Streaming está habilitado.

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

ContentProvider te permite precargar recursos en una experiencia usando el método ContentProvider:PreloadAsync().Quizás quieras mostrar una pantalla de carga, precargar recursos críticos y solo entonces permitir que el jugador entre en la experiencia.

Mejores prácticas para la precarga

  • Solo preload los recursos esenciales, no todo el Workspace .Puede obtener un pop-in ocasional, pero reduce los tiempos de carga y generalmente no interrumpe la experiencia del jugador.Los activos que son buenos candidatos para la precarga incluyen los requeridos para la pantalla de carga, la interfaz de usuario o la zona de inicio.
  • Deje que los jugadores omitan la pantalla de carga o la omitan automáticamente después de una cierta cantidad de tiempo.

Muestras de código

En este ejemplo, una imagen y un sonido se prestan a un juego. Una vez que terminen de cargar el script, imprimirá un mensaje en la salida.

Proveedor de contenido

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

Resumen

Propiedades

Métodos

Propiedades

BaseUrl

Solo lectura
No replicado
Leer paralelo

Utilizado por el ContentProvider para descargar recursos del sitio web de Roblox.

Esta URL apunta a un sitio web alojado de Roblox desde el cual se descargan recursos y se extrae del archivo AppSettings.xml, ubicado en la carpeta de hash de versión.

Es posible reemplazar 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

Solo lectura
No replicado
Leer paralelo

Da el número de artículos en la cola de solicitudes ContentProvider que deben descargarse.

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

A los desarrolladores se les aconseja que no utilicen 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 agreguen y descarguen nuevos recursos.Los desarrolladores que buscan mostrar el progreso de carga deben cargar los recursos uno a la vez (ver ejemplo a continuación).

Muestras 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

Obtiene el actual Enum.AssetFetchStatus de la contentId proporcionada. Usa GetAssetFetchStatusChangedSignal() para escuchar cambios a este valor.

Parámetros

contentId: ContentId

El ID del contenido para recuperar el estado.

Valor predeterminado: ""

Devuelve

Muestras de código

Recupera el inicial Enum.AssetFetchStatus de un activo y escucha las actualizaciones futuras.

Supervisar el estado de AssetFetch

local ContentProvider = game:GetService("ContentProvider")
-- Un ejemplo de activo para cargar
local ASSET_ID = "rbxassetid://9120386436"
local exampleAsset = Instance.new("Sound")
exampleAsset.SoundId = ASSET_ID
-- Exponer el estado actual de AssetFetch de la entidad
local initialAssetFetchStatus = ContentProvider:GetAssetFetchStatus(ASSET_ID)
print("Initial AssetFetchStatus:", initialAssetFetchStatus)
-- Escuchar actualizaciones
local assetFetchStatusChangedSignal = ContentProvider:GetAssetFetchStatusChangedSignal(ASSET_ID)
local function onAssetFetchStatusChanged(newAssetFetchStatus: Enum.AssetFetchStatus)
print(`New AssetFetchStatus: {newAssetFetchStatus}`)
end
assetFetchStatusChangedSignal:Connect(onAssetFetchStatusChanged)
-- Activar el recurso para precargar
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 Enum.AssetFetchStatus de los contenidos proporcionados cambia.Conecte a esta señal usando una llamada de devolución con un argumento de tipo Enum.AssetFetchStatus .Esto es particularmente útil para los activos que podrían actualizarse automáticamente como la miniatura de un usuario cuando cambia de ropa.

Parámetros

contentId: ContentId
Valor predeterminado: ""

Devuelve

Muestras de código

Recupera el inicial Enum.AssetFetchStatus de un activo y escucha las actualizaciones futuras.

Supervisar el estado de AssetFetch

local ContentProvider = game:GetService("ContentProvider")
-- Un ejemplo de activo para cargar
local ASSET_ID = "rbxassetid://9120386436"
local exampleAsset = Instance.new("Sound")
exampleAsset.SoundId = ASSET_ID
-- Exponer el estado actual de AssetFetch de la entidad
local initialAssetFetchStatus = ContentProvider:GetAssetFetchStatus(ASSET_ID)
print("Initial AssetFetchStatus:", initialAssetFetchStatus)
-- Escuchar actualizaciones
local assetFetchStatusChangedSignal = ContentProvider:GetAssetFetchStatusChangedSignal(ASSET_ID)
local function onAssetFetchStatusChanged(newAssetFetchStatus: Enum.AssetFetchStatus)
print(`New AssetFetchStatus: {newAssetFetchStatus}`)
end
assetFetchStatusChangedSignal:Connect(onAssetFetchStatusChanged)
-- Activar el recurso para precargar
local function onAssetRequestComplete(contentId: string, assetFetchStatus: Enum.AssetFetchStatus)
print(`Preload status {contentId}: {assetFetchStatus.Name}`)
end
ContentProvider:PreloadAsync({ exampleAsset }, onAssetRequestComplete)

ListEncryptedAssets


Devuelve

RegisterDefaultEncryptionKey

()

Parámetros

encryptionKey: string
Valor predeterminado: ""

Devuelve

()

RegisterDefaultSessionKey

()

Parámetros

sessionKey: string
Valor predeterminado: ""

Devuelve

()

RegisterEncryptedAsset

()

Parámetros

assetId: ContentId
Valor predeterminado: ""
encryptionKey: string
Valor predeterminado: ""

Devuelve

()

RegisterSessionEncryptedAsset

()

Parámetros

contentId: ContentId
Valor predeterminado: ""
sessionKey: string
Valor predeterminado: ""

Devuelve

()

UnregisterDefaultEncryptionKey

()

Devuelve

()

UnregisterEncryptedAsset

()

Parámetros

assetId: ContentId
Valor predeterminado: ""

Devuelve

()

PreloadAsync

()
Proporciona

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

Cuando se llama, el motor identifica los enlaces a contenido para cada elemento de la lista.Para cualquiera de los Instances que tengan propiedades que definan enlaces a contenido, como un Decal o un Sound, el motor intenta cargar estos recursos de Roblox.Para cada activo solicitado, se ejecuta la función de llamada de devolución, que indica el activo final Enum.AssetFetchStatus .

Si algún recurso no se cargar, aparece un mensaje de error en la Salida.El propio método no fallará y continuará ejecutándose hasta que haya procesado cada instancia solicitada.

Limitaciones

SurfaceAppearance y MaterialVariant no son compatibles con PreloadAsync() porque estos objetos dependen de los recursos de paquete de textura procesados en lugar de cargar directamente texturas individuales.Llamarlo en una instancia SurfaceAppearance no hará nada, pero las texturas asociadas aún se transmitirán durante el tiempo de ejecución.

Parámetros

contentIdList: Array

Un array de instancias para cargar.

Valor predeterminado: ""
callbackFunction: function

La función llamada cuando cada solicitud de activo se completa. Devuelve la cadena content y el recursofinal Enum.AssetFetchStatus.

Valor predeterminado: "nil"

Devuelve

()

Muestras de código

En este ejemplo de código, un sonido y una textura se prestan usando Sound y Decal instancias.

Precargando 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,
}
-- Esto se golpeará cuando cada activo se resuelva
local callback = function(assetId, assetFetchStatus)
print("PreloadAsync() resolved asset ID:", assetId)
print("PreloadAsync() final AssetFetchStatus:", assetFetchStatus)
end
-- Preajustar el contenido y el tiempo
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