ContentProvider

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Không Thể Tạo
Dịch Vụ
Không Sao Chép

Dịch vụ tải nội dung (tài sản) vào trò chơi.

Các máy chủ Roblox phát sóng tất cả các tài nguyên đến client ở thời gian thực: đối tượng trong Workspace, ảnh素 tài nguyên, texture assets, v.v. Tài nguyên như ảnh素 visual data, textures, decals, và âm thanh được phát sóng như yêu cầu, bất kể có đang bật Streaming hay không.

Trong một số trường hợp, hành vi này không mong muốn, vì nó có thể dẫn đến một thời gian trễ trước khi nội dung được tải vào trải nghiệm.

ContentProvider cho phép bạn tải trước các tài nguyên vào một trải nghiệm bằng cách sử dụng phương pháp ContentProvider:PreloadAsync() . Bạn có thể muốn hiển thị một màn hình tải trước, tải trước các tài nguyên quan trọng và sau đó cho phép người chơi vào trải nghiệm.

Tốt nhất prereading

  • Chỉ tải trước các tài nguyên cần thiết, không là toàn bộ Workspace. Bạn có thể nhận được một vài pop-in, nhưng nó giảm thời gian tải và thông thường không làm gián đoạn trải nghiệm người chơi. Các tài nguyên tốt cho việc tải trước bao gồm những yê
  • Cho phép người chơi bỏ qua màn hình tải, hoặc tự động bỏ qua sau một khoảng thời gian nhất định.

Mẫu mã

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

Tóm Tắt

Thuộc Tính

Phương Pháp

Thuộc Tính

BaseUrl

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Được sử dụng bởi ContentProvider để tải tài nguyên từ trang Roblox.

Địa chỉ này chỉ đến một trang web Roblox được lưu trữ từ đó tài nguyên được tải xuống và được rút ra khỏi tập tin AppSettings.xml, được đặt ở thư mục version- hash.

Nó là khả thi để đổi được thuộc tính này bằng cách sử dụng hàm ContentProvider:SetBaseUrl() trong thanh command; tuy nhiên, điều này không được khuyến nghị và có thể gây ra vấn đề tải tài sản.

RequestQueueSize

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Cung cấp số lượng các mục trong hồ sơ yêu cầu ContentProvider cần thiết phải tải xuống.

Các mục được thêm vào hàng đợi yêu cầu của client khi sử dụng một tài nguyên lần đầu tiên hoặc ContentProvider:PreloadAsync() được gọi.

Các nhà phát triển không được khuyến khích sử dụng RequestQueueSize để tạo các thanh tải. Điều này là do kích thước hàng đợi có thể tăng lên và giảm xuống theo thời gian khi các tài nguyên mới được thêm và tải xuống. Các nhà phát triển đang tìm kiếm để hiển thị tiến độ tải xuống

Mẫu mã

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

Phương Pháp

GetAssetFetchStatus

Lấy hiện tại Enum.AssetFetchStatus của ContentId đã cung cấp. Sử dụng contentId để lắng nghe những thay đổi này.

Tham Số

contentId: ContentId

ID của nội dung để lấy thông tin tình trạng cho.


Lợi Nhuận

Mẫu mã

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

Một tín hiệu được kích hoạt khi Enum.AssetFetchStatus của nội dung được cung cấp thay đổi. Kết nối với tín hiệu này bằng cách sử dụng một hàm chuỗi có một lập phương Enum.AssetFetchStatus . Điều này đặc biệt hữu ích cho các tài n

Tham Số

contentId: ContentId

Lợi Nhuận

Mẫu mã

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


Lợi Nhuận

RegisterDefaultEncryptionKey

void

Tham Số

encryptionKey: string

Lợi Nhuận

void

RegisterDefaultSessionKey

void

Tham Số

sessionKey: string

Lợi Nhuận

void

RegisterEncryptedAsset

void

Tham Số

assetId: ContentId
encryptionKey: string

Lợi Nhuận

void

RegisterSessionEncryptedAsset

void

Tham Số

contentId: ContentId
sessionKey: string

Lợi Nhuận

void

UnregisterDefaultEncryptionKey

void

Lợi Nhuận

void

UnregisterEncryptedAsset

void

Tham Số

assetId: ContentId

Lợi Nhuận

void

PreloadAsync

void
Sinh Lợi

Tạm dừng cho đến tất cả các tài nguyên được liên kết với Instances đã được tải. Điều này có thể được sử dụng để tạm dừng một script và không sử dụng nội dung cho đến khi chắc chắn rằng nội dung đã được tải vào trải nghiệm.

Khi gọi, máy chủ xác định các liên kết đến nội dung cho mỗi mục trong danh sách. Đối với bất kỳ Instances nào có thuộc tính định nghĩa liên kết đế

Phương thức này cũng có thể lấy một danh sách các chuỗi ID nội dung, tuy nhiên các chuỗi này phải tương ứng với hình ảnh tài nguyên. Cố gắng tải các tài nguyên không hình ảnh thông qua sử dụng các chuỗi ID nội dung của họ sẽ kết thúc bằng thất bại.

Nếu bất kỳ nguồn tài nguyên nào không tải được, một thông điện lỗi xuất hiện trong kết quả. Phương pháp chính sẽ không xảy ra lỗi và nó sẽ tiếp tục thi hành cho đến khi nó đã xử lý mỗi yêu cầu tài nguyên hoặc ID tài nguyên được yêu cầu.

Tham Số

contentIdList: Array

Một dàn bố trí các ID hoặc chuỗi dữ liệu (cho hình ảnh) để tải.

callbackFunction: function

Hàm này được gọi khi mỗi yêu cầu tài nguyên hoàn tất. Điều này trả lại dòng chuỗi contentEnum.AssetFetchStatus cuối cùng của tài nguyên.

Giá Trị Mặc Định: "nil"

Lợi Nhuận

void

Mẫu mã

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

Sự Kiện

AssetFetchFailed

Tham Số

assetId: ContentId