ContentProvider

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz
Hizmet
Çoğaltılmamış

Bir oyuna içerik (varlıklar) yükleyen hizmet.

Roblox sunucuları, çalışma sırasında tüm varlıkları istemciye yayınlar: Çalışma Alanı'ndaki nesneler, dokuz meshesi, dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuz dokuzMesh görüntü verileri, dokular, çıkartmalar ve sesler gerekli olduğu gibi yayınlanır, Yayınlanma etkinleştirilmiş olsa bile.

Bazı durumlarda, bu davranış istenmez, çünkü içerik deneye yüklenmeden önce bir gecikmeye neden olabilir.

ContentProvider varlıkları ContentProvider:PreloadAsync() yöntemi kullanarak bir deneyime önceden yüklemenizi sağlar.Bir yükleme ekranı görüntülemek, kritik varlıkları önceden yükleme ve sadece oyuncuyu deneyime izin vermek isteyebilirsiniz.

Önyükleme için En İyi Uygulamalar

  • Sadece önemli varlıkları önceden yükle, değil tüm Workspace .Zaman zaman pop-in alabilirsiniz, ancak yükleme sürelerini azaltır ve genellikle oyuncu deneyimini bozmaz.Önyükleme için iyi adaylar olan varlıklar, yükleme ekranı, UI veya başlangıç alanı için gerekli olanları içerir.
  • Oyuncuların yükleme ekranını atlamasına izin verin veya belirli bir süre sonra otomatik olarak atlayın.

Kod Örnekleri

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

Özet

Özellikler

Yöntemler

Özellikler

BaseUrl

Salt Okunur
Çoğaltılmamış
Paralel oku

Roblox web sitesinden varlıkları indirmek için ContentProvider tarafından kullanılır.

Bu URL, kaynakların indirildiği ve AppSettings.xml dosyasından çekildiği Roblox barındırılan bir web sitesine işaret eder ve sürüm-hash klasöründe bulunur.

Bu özellik komut çubuğundaki ContentProvider:SetBaseUrl() fonksiyonu kullanılarak üzerine yazılabilir; ancak, bu önerilmez ve varlık yükleme sorunlarına neden olabilir.

RequestQueueSize

Salt Okunur
Çoğaltılmamış
Paralel oku

İndirilmesi gereken ContentProvider istek sırasındaki öğe sayısını verir.

Eşyalar, bir varlık ilk kez kullanıldığında veya ContentProvider:PreloadAsync() çağrıldığında istemci isteği sırasına eklenir.

Geliştiricilere, yükleme çubukları oluşturmak için RequestQueueSize kullanmamaları tavsiye edilir.Bunun nedeni, yeni varlıklar eklenip indirildikçe sıra boyutunun zamanla artıp azalabilmesidir.Yükleme ilerlemesini görüntülemek isteyen geliştiriciler bir seferde bir kerede varlıkları yüklemelidir (aşağıdaki örneğe bakın).

Kod Örnekleri

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

Yöntemler

GetAssetFetchStatus

Verilen Enum.AssetFetchStatus ın mevcut contentId sini alır. Bu değere yapılan değişiklikleri dinlemek için GetAssetFetchStatusChangedSignal() kullanın.

Parametreler

contentId: ContentId

Durumu almak için içeriğin ID'si.

Varsayılan değer: ""

Dönüşler

Kod Örnekleri

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

Verilen içeriğin Enum.AssetFetchStatus değiştiğinde ateşlenen bir sinyal.Bu sinyale bir Enum.AssetFetchStatus tipinde bir argüman kullanarak geri çağrakla bağlanın.Bu, kullanıcılar kıyafetlerini değiştirdiğinde kendilerini otomatik olarak güncelleyebilecek varlıklar için özellikle yararlıdır. thumbnail of a user when they change clothes.

Parametreler

contentId: ContentId
Varsayılan değer: ""

Dönüşler

Kod Örnekleri

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


Dönüşler

RegisterDefaultEncryptionKey

()

Parametreler

encryptionKey: string
Varsayılan değer: ""

Dönüşler

()

RegisterDefaultSessionKey

()

Parametreler

sessionKey: string
Varsayılan değer: ""

Dönüşler

()

RegisterEncryptedAsset

()

Parametreler

assetId: ContentId
Varsayılan değer: ""
encryptionKey: string
Varsayılan değer: ""

Dönüşler

()

RegisterSessionEncryptedAsset

()

Parametreler

contentId: ContentId
Varsayılan değer: ""
sessionKey: string
Varsayılan değer: ""

Dönüşler

()

UnregisterDefaultEncryptionKey

()

Dönüşler

()

UnregisterEncryptedAsset

()

Parametreler

assetId: ContentId
Varsayılan değer: ""

Dönüşler

()

PreloadAsync

()
Bekletir

Verdiğiniz Instances ile ilişkili tüm varlıklar yüklendene kadar verir.Bu, bir senaryoyu duraklatmak ve içeriğin deneyime yüklendiğinden emin olana kadar içeriği kullanmamak için kullanılabilir.

Çağrıldığında, motor listedeki her öğe için içeriğe bağlantıları tanımlar.İçeriğe bağlantıları tanımlayan özelliklere sahip herhangi bir Instances , Decal veya Sound gibi özelliklere sahip herhangi birinde, motor bu varlıkları Roblox'tan yüklemeye çalışır.Her talep edilen varlık için, çağrı işlevi çalışır ve varlığın son Enum.AssetFetchStatus 'ini gösterir.

Eğer varlıklardan herhangi biri yüklenemiyorsa, çıktıda bir hata mesajı görünür.Yöntemin kendisi hata yapmayacak ve talep edilen her bir durumişledene kadar devam edecek.

Sınırlar

ve desteklenmiyor çünkü bu nesneler, tek tek metinleri doğrudan yüklemeden işlenmiş doküman paketlerine bağımlıdır.Bir SurfaceAppearance örneğinde çağırmak hiçbir şey yapmayacak, ancak ilişkili dokular hala çalışma sırasında yayınlanacak.

Parametreler

contentIdList: Array

Yüklenecek bir dizi instans.

Varsayılan değer: ""
callbackFunction: function

Her bir varlık isteği tamamlandığında çağrılan işlev. content dize ve varlığın son Enum.AssetFetchStatus dönümünü döndürür.

Varsayılan değer: "nil"

Dönüşler

()

Kod Örnekleri

In this code sample, a sound and a texture are preloaded using Sound and Decal instances.

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

Etkinlikler

AssetFetchFailed

Parametreler

assetId: ContentId