DataModel

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

Mô hình dữ liệu (thường được gọi là sau biến toàn cầu được sử dụng để truy cập nó) là gốc của cấu trúc cha-con của Roblox.Các con trực tiếp của nó là các dịch vụ, chẳng hạn như WorkspaceLighting , hoạt động như các thành phần cơ bản của một trò chơi Roblox.

Mẫu mã

Demonstrates using game, the root instance of DataModel, to get services such as Workspace and Lighting.

GetService()

local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")
-- Examples of modifying properties of these services
Workspace.Gravity = 20
Lighting.ClockTime = 4

Tóm Tắt

Thuộc Tính

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

    Mô tả ID của người dùng hoặc nhóm sở hữu địa điểm.

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

    Mô tả Enum.CreatorType vị địa điểm, xem vị trí có thuộc sở hữu của người dùng hay nhóm hay không.

  • Chỉ Đọc
    Không Sao Chép
    Bảo Mật Kịch Bản Roblox
    Đọc Song Song
  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Mô tả ID của trải nghiệm mà nơi chạy trên máy chủ thuộc về.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song
    Đã Lỗi Thời

    Không hoạt động. Lịch sử mô tả Enum.Genre của nơi được đặt trên trang web Roblox.

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

    Một nhận dạng duy nhất cho máy chủ trò chơi ví dụ / trường hợpchạy.

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

    Biểu diễn cách người chơi trong máy chủ được xử lý bởi mai mối.

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

    Mô tả ID của nơi chạy trên máy chủ.

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

    Mô tả phiên bản của nơi máy chủ đang chạy.

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

    Mô tả ID máy chủ riêng của máy chủ, nếu máy chủ là máy chủ riêng hoặc là reserved server .

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

    Mô tả UserId của Player mà sở hữu máy chủ riêng nếu máy chủ là riêng tư.

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

    Một tham chiếu đến dịch vụ Workspace .

Phương Pháp

  • BindToClose(function : function):()

    Gắn một chức năng phải được gọi trước khi máy chủ tắt.

  • Bảo Mật Plugin

    Trả về một bảng chứa thông tin cơ bản về các công việc được thực hiện bởi lịch trình việc nhiệm vụ.

  • GetObjects(url : ContentId):Instances
    Bảo Mật Plugin
    Đã Lỗi Thời

    Trả về một array của Instances liên quan đến URL nội dung được cung cấp.

  • Trả về true nếu khách hàng đã hoàn thành tải trò chơi lần đầu tiên.

  • SetPlaceId(placeId : number):()
    Bảo Mật Plugin

    Đặt DataModel.PlaceId của game instance hiện tại vào vị trí placeId đã cho.

  • SetUniverseId(universeId : number):()
    Bảo Mật Plugin

    Đặt DataModel.GameId của game instance hiện tại vào universeId đã cho.

Phương Pháp kế thừa từ ServiceProvider
  • Ghi Song Song

    Trả về dịch vụ được định bởi className đã cho nếu nó đã được tạo, lỗi cho một tên không hợp lệ.

  • Trả lại dịch vụ với tên lớp yêu cầu, tạo nó nếu nó không tồn tại.

Sự Kiện

Sự Kiện kế thừa từ ServiceProvider

Thuộc Tính

CreatorId

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

Thuộc tính này mô tả ID của người dùng hoặc nhóm sở hữu địa điểm.Nếu thuộc tính DataModel.CreatorType có giá trị là 'Người dùng' thì CreatorId sẽ là Player.UserId của chủ sở hữu địa điểmđó.Nếu DataModel.CreatorType'Nhóm' thì CreatorId sẽ là ID của nhóm sở hữu địa điểmđó.

Mẫu mã

This code sample will print an output when the user that owns the game, or a member of the group that owns the game joins the server.

To run this script, place it inside a Script in ServerScriptService

Detect when the place owner joins the game

local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("The place owner has joined the game!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroup(game.CreatorId) then
print("A member of the group that owns the place has joined the game!")
end
end
end)

CreatorType

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

Thuộc tính này mô tả Enum.CreatorType của địa điểm, xem nơi có thuộc sở hữu của một người dùng hay một nhóm hay không.

Nếu Enum.CreatorType'Người dùng' , thì thuộc tính DataModel.CreatorId sẽ mô tả UserId của tài khoản sở hữu trò chơi.Nếu CreatorType là 'Nhóm' , thì nó sẽ mô tả ID nhóm.

Mẫu mã

This code sample will print an output when the user that owns the game, or a member of the group that owns the game joins the server.

To run this script, place it inside a Script in ServerScriptService

Detect when the place owner joins the game

local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("The place owner has joined the game!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroup(game.CreatorId) then
print("A member of the group that owns the place has joined the game!")
end
end
end)

Environment

Chỉ Đọc
Không Sao Chép
Bảo Mật Kịch Bản Roblox
Đọc Song Song

GameId

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

Thuộc tính này mô tả ID của trải nghiệm mà nơi chạy trên máy chủ thuộc về.

Xem thêm

  • DataModel.PlaceId , mô tả ID của nơi chạy trên máy chủ
  • DataModel.JobId , đây là một nhận dạng duy nhất cho một ví trò chơi trên máy chủ đang chạy
  • TeleportService , đó là một dịch vụ có thể được sử dụng để vận chuyển Players giữa các trò chơi
Chỉ Đọc
Không Sao Chép
Đọc Song Song

Thuộc tính này bị hỏng và không nên được sử dụng.

Thuộc tính này trong lịch sử mô tả Enum.Genre của nơi được đặt trên trang web Roblox.

Thuộc tính này, cùng với DataModel.GearGenreSetting , không còn hoạt động đúng cách do các thể loại hiện hữu trên trang web Roblox không được phản ánh trong enum Enum.Genre .Kết kết quảlà, cố gắng đọc thuộc tính này có thể gây ra lỗi.

JobId

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

Thuộc tính này là một nhận dạng duy nhất cho instance máy chủ trò ví dụ / trường hợpđang chạy.Nó là một nhận dạng duy nhất toàn diện (UUID), có nghĩa là không có hai máy chủ, trong quá khứ hoặc hiện tại, sẽ bao giờ có cùng một ID.

Mặc định cho một chuỗi trống trong Studio.

Xem thêm

MatchmakingType

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

Thuộc tính này đại diện cho cách người chơi trong máy chủ được xử lý bởi mai mối.Người chơi với các định dạng khác nhau MatchmakingTypes không thể ở trong hoặc dịch chuyển đến cùng một máy chủ.

Lưu ý rằng thuộc tính này chỉ hợp lệ trên máy chủ DataModel và nó sẽ là giá trị Enum.MatchmakingType.Default cho tất cả các khách hàng, do đó chỉ tham chiếu thuộc tính này bên trong bên máy chủ Script .

PlaceId

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

Thuộc tính này mô tả ID của nơi chạy trên máy chủ.

Nếu nơi chưa được xuất bản lên Roblox, ID này sẽ phù hợp với mẫu đang được sử dụng.

Xem thêm

  • DataModel.GameId , mô tả ID của trải nghiệm mà nơi hiện tại thuộc về
  • DataModel.JobId , đây là một nhận dạng duy nhất cho một ví trò chơi trên máy chủ đang chạy
  • TeleportService , đó là một dịch vụ có thể được sử dụng để vận chuyển Players giữa các địa điểm

PlaceVersion

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

Thuộc tính này mô tả phiên bản của nơi máy chủ đang chạy.

Số phiên bản này phù hợp với số phiên bản được hiển thị dưới phần Lịch sử phiên bản của cài đặt địa điểm.Nó không phải là phiên bản hiện tại của khách hàng Roblox.Thuộc tính này là 0 cho tất cả các trải nghiệm chưa được công bố.

Khi một instanz máy chủ được tạo cho một địa điểm, nó sử dụng phiên bản hiện tại của địa điểm.Nếu nơi được cập nhật sau khi máy chủ này đang chạy, máy chủ sẽ ở lại phiên bản hiện tại.

Tính năng này có thể được sử dụng để hiển thị một ScreenGui hiển thị phiên bản hiện tại của trò chơi đến Players để hỗ trợ gỡ lỗi.

Mẫu mã

This code sample will place a simple GUI in the StarterGui showing the place version the server is running at.

To use this sample, place it inside a Script in ServerScriptService.

Server version number GUI

local StarterGui = game:GetService("StarterGui")
local versionGui = Instance.new("ScreenGui")
local textLabel = Instance.new("TextLabel")
textLabel.Position = UDim2.new(1, -10, 1, 0)
textLabel.AnchorPoint = Vector2.new(1, 1)
textLabel.Size = UDim2.new(0, 150, 0, 40)
textLabel.BackgroundTransparency = 1
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.TextXAlignment = Enum.TextXAlignment.Right
textLabel.TextScaled = true
local placeVersion = game.PlaceVersion
textLabel.Text = string.format("Server version: %s", placeVersion)
textLabel.Parent = versionGui
versionGui.Parent = StarterGui

PrivateServerId

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

Thuộc tính này mô tả ID máy chủ riêng của máy chủ, nếu máy chủ là máy chủ riêng.

Nếu máy chủ không phải là máy chủ riêng, thì thuộc tính này sẽ là một chuỗi trống.

Máy chủ riêng

Các máy chủ riêng tham chiếu đến những điều theo dõi:

PrivateServerId so với JobId

PrivateServerId của một máy chủ khác với DataModel.JobId . The JobId là nhận dạng duy nhất của máy ví dụ / trường hợphiện tại.

Các máy chủ riêng (máy chủ riêng hoặc dự trữ) có thể có nhiều máy chủ cùng thời gian liên quan đến chúng theo thời gian.Điều này là do, mặc dù chỉ một ví dụ máy chủ có thể chạy cùng một lúc cho một máy chủ riêng, các ví dụ máy chủ mới có thể mở và đóng khi người chơi tham gia và rời khỏi trò chơi.Ví dụ, không có server instance nào đang chạy khi không có ai chơi trong máy chủ.PrivateServerId sẽ được đồng nhất trên tất cả các instância máy chủ này, và DataModel.JobId sẽ là duy nhất cho mỗi cái.

Xem thêm:

Mẫu mã

DataModel.PrivateServerId and DataModel.PrivateServerOwnerId can be used to detect if the current server instance is a standard server, a VIP server or a reserved server.

Detecting Private Servers

local function getServerType()
if game.PrivateServerId ~= "" then
if game.PrivateServerOwnerId ~= 0 then
return "VIPServer"
else
return "ReservedServer"
end
else
return "StandardServer"
end
end
print(getServerType())

PrivateServerOwnerId

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

Thuộc tính này mô tả UserId của Player mà sở hữu máy chủ riêng tư nếu máy chủ là riêng tư.

Nếu máy chủ là máy chủ tiêu chuẩn hoặc được dự trữ thì thuộc tính này sẽ được đặt thành 0.

Tính năng này có thể được sử dụng để xác định xem một Player có phải là chủ sở hữu của máy chủ riêng hay không, ví dụ:


local Players = game:GetService("Players")
-- đây có phải là một máy chủ riêng tư?
if game.PrivateServerId ~= "" and game.PrivateServerOwnerId ~= 0 then
-- lắng nghe các người chơi mới được thêm vào
Players.PlayerAdded:Connect(function(player)
-- kiểm tra xem người chơi có phải là chủ server không
if player.UserId == game.PrivateServerOwnerId then
print("The private server owner has joined the game")
end
end)
end

Xem thêm:

Mẫu mã

DataModel.PrivateServerId and DataModel.PrivateServerOwnerId can be used to detect if the current server instance is a standard server, a VIP server or a reserved server.

Detecting Private Servers

local function getServerType()
if game.PrivateServerId ~= "" then
if game.PrivateServerOwnerId ~= 0 then
return "VIPServer"
else
return "ReservedServer"
end
else
return "StandardServer"
end
end
print(getServerType())

Workspace

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

Thuộc tính này là một tham chiếu đến dịch vụ Workspace . Nó luôn chỉ vào Workspace và sẽ không bao giờ là nil .

Phương Pháp

BindToClose

()

Gắn một chức năng phải được gọi trước khi máy chủ tắt.Nếu chức năng gắn kết chấp nhận một tham số, nó truyền Enum.CloseReason xác định lý do dẫn đến việc tắt máy chủ.

Bạn có thể gán nhiều chức năng bằng cách gọi BindToClose() lặp lại. Các chức năng gắn kết được gọi song song và chạy cùng một lúc.

Máy chủ trải nghiệm chờ 30 giây để tất cả các chức năng gắn kết ngừng chạy trước khi nó tắt.Sau 30 giây, máy chủ tắt ngay cả khi các chức năng vẫn đang hoạt động.

Để xác minh rằng phiên hiện tại không có trong Roblox Studio, hãy sử dụng RunService:IsStudio() .Điều này ngăn chặn các chức năng gắn kết hoàn thành chạy trong các phiên thử nghiệm ngoại tuyến.

Khi bạn sử dụng DataStoreService, bạn cũng nên sử dụng BindToClose để gắn một chức năng lưu tất cả dữ liệu chưa lưu vào DataStores .Điều này ngăn chặn mất dữ liệu nếu máy chủ bị tắt đột ngột.

Xem thêm:

Tham Số

function: function

Một chức năng được gọi trước khi máy chủ trải nghiệm tắt.Nếu chức năng gắn kết chấp nhận một tham số, nó truyền Enum.CloseReason xác định lý do dẫn đến việc tắt máy chủ.

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

Lợi Nhuận

()

Mẫu mã

The following code sample is an example of how DataModel:BindToClose() can be used to save player data in the event of a server shutdown. In this example, player data is stored in a dictionary named playerData with UserIds as keys.

Saving player data before shutting down

local DataStoreService = game:GetService("DataStoreService")
local RunService = game:GetService("RunService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
local allPlayerSessionDataCache = {}
local function savePlayerDataAsync(userId, data)
return playerDataStore:UpdateAsync(userId, function(oldData)
return data
end)
end
local function onServerShutdown(closeReason)
if RunService:IsStudio() then
-- Avoid writing studio data to production and stalling test session closing
return
end
-- Reference for yielding and resuming later
local mainThread = coroutine.running()
-- Counts up for each new thread, down when the thread finishes. When 0 is reached,
-- the individual thread knows it's the last thread to finish and should resume the main thread
local numThreadsRunning = 0
-- Calling this function later starts on a new thread because of coroutine.wrap
local startSaveThread = coroutine.wrap(function(userId, sessionData)
-- Perform the save operation
local success, result = pcall(savePlayerDataAsync, userId, sessionData)
if not success then
-- Could implement a retry
warn(string.format("Failed to save %d's data: %s", userId, result))
end
-- Thread finished, decrement counter
numThreadsRunning -= 1
if numThreadsRunning == 0 then
-- This was the last thread to finish, resume main thread
coroutine.resume(mainThread)
end
end)
-- This assumes playerData gets cleared from the data table during a final save on PlayerRemoving,
-- so this is iterating over all the data of players still in the game that hasn't been saved
for userId, sessionData in pairs(allPlayerSessionDataCache) do
numThreadsRunning += 1
-- This loop finishes running and counting numThreadsRunning before any of
-- the save threads start because coroutine.wrap has built-in deferral on start
startSaveThread(userId, sessionData)
end
if numThreadsRunning > 0 then
-- Stall shutdown until save threads finish. Resumed by the last save thread when it finishes
coroutine.yield()
end
end
game:BindToClose(onServerShutdown)

The following example prints the close reason to the output. It prints Done after three seconds, and then allows Roblox to shut down the experience server.

The close reason matches one of the values in Enum.CloseReason.

Binding to and Handling Game Shutdown

game:BindToClose(function(closeReason)
print(`Closing with reason {closeReason}`)
task.wait(3)
print("Done")
end)

GetJobsInfo

Bảo Mật Plugin

Trả về một bảng chứa thông tin cơ bản về các công việc được thực hiện bởi lịch trình việc nhiệm vụ.

Trong việc tính toán, một lịch trình việc làm là một hệ thống chịu trách nhiệm thực hiện các nhiệm vụ chính yếu vào các khoảng thời gian thích hợp.

Bạn cũng có thể tìm thấy thống kê lịch trình nhiệm vụ trực tiếp trong cửa sổ Lịch trình nhiệm vụ trong Roblox Studio.

Cái nhập đầu tiên trong bảng trả về là một bảng tham chiếu chứa các thống kê (hoặc tiêu đề) có sẵn. Nó có định dạng sau:


{
["name"] = "name",
["averageDutyCycle"] = "averageDutyCycle",
["averageStepsPerSecond"] = "averageStepsPerSecond",
["averageStepTime"] = "averageStepTime",
["averageError"] = "averageError",
["isRunning"] = "isRunning",
}

Các lần nhập tiếp theo trong bảng trả về là các từ điển chứa các thống kê trên cho các công việc được thực hiện bởi lịch trình nhiệm vụ. Ví dụ:


{
["name"] = "Heartbeat",
["averageDutyCycle"] = 0,
["averageStepsPerSecond"] = 0,
["averageStepTime"] = 0,
["averageError"] = 0,
["isRunning"] = false,
}

Xem thêm:


Lợi Nhuận

Một bảng chứa thông tin về các công việc được thực hiện bởi lịch trình viên nhiệm vụ, xem phía trên để có định dạng.

Mẫu mã

Here is an example of iterating over the job info.

Getting Jobs Info

local jobInfo = game:GetJobsInfo()
local jobTitles = jobInfo[1]
table.remove(jobInfo, 1)
local divider = string.rep("-", 120)
print(divider)
warn("JOB INFO:")
print(divider)
for _, job in pairs(jobInfo) do
for jobIndex, jobValue in pairs(job) do
local jobTitle = jobTitles[jobIndex]
warn(jobTitle, "=", jobValue)
end
print(divider)
end

GetObjects

Instances
Bảo Mật Plugin

Phương pháp này trả về một array của Instances liên quan đến URL nội dung đã cho.Nó có thể được sử dụng để chèn nội dung từ thư viện Roblox.Không thể chèn Sounds bằng cách này vì chúng không có Instance liên quan đến chúng và chỉ có một URL nội dung.

Không giống như InsertService:LoadAsset() , DataModel:GetObjects() không yêu cầu một tài sản phải "tin cậy," có nghĩa là một tài sản không cần phải thuộc về người dùng đã đăng nhập, hoặc được tạo bởi Roblox, để được chèn vào.Tuy nhiên, nếu tài sản không thuộc sở hữu của người dùng đã đăng nhập, nó phải được tự do sử dụng.

Do bối cảnh bảo mật của chức năng này, nó chỉ có thể được sử dụng bởi các plugin hoặc thanh lệnh.Đối với một lựa chọn có thể được sử dụng trong ScriptsLocalScripts , xem InsertService:LoadAsset() .

Tham Số

url: ContentId

URL nội dung đã cho.

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

Lợi Nhuận

Instances

Một mảng của Instances liên quan đến URL nội dung.

Mẫu mã

If you want to view a plugin's source code without installing it, you can use DataModel:GetObjects() to download the plugin. The code sample below includes a function that will take a plugin's website URL and insert the plugin into the currently selected Instance or the Workspace.

Due to GetObjects' security context, this function can only be used in the command line or in a plugin.

View a plugin's source code

local Selection = game:GetService("Selection")
local WEB_URL = "plugin URL here"
local function downloadPlugin(webURL)
-- get the content URL
local contentID = string.match(webURL, "%d+")
local contentURL = "rbxassetid://" .. contentID
-- download the objects
local objects = game:GetObjects(contentURL)
-- decide where to parent them
local selection = Selection:Get()
local parent = #selection == 1 and selection[1] or workspace
-- parent the objects
for _, object in pairs(objects) do
object.Parent = parent
end
end
downloadPlugin(WEB_URL)

The content ID of a Decal on the Roblox website is associated with a Decal Instance rather than the actual content ID of the texture.

The code below, will use DataModel:GetObjects() to insert Decal objects into place and read their Decal.Texture property to obtain the image content IDs.

To use this code sample, enter the web URLs of the decals you'd like to convert into the array named IMAGES (as strings). A dictionary with the converted textures will be outputted.

Batch convert decal IDs

local IMAGES = {
-- Insert Decal web URLs in an array here (as strings)
}
-- open the dictionary
local outputString = "textures = {"
-- utility function to add a new entry to the dictionary (as a string)
local function addEntryToDictionary(original, new)
outputString = outputString
.. "\n" -- new line
.. " " -- indent
.. '["'
.. original
.. '"]' -- key
.. ' = "'
.. new
.. '",' -- value
end
print("Starting conversion")
for _, webURL in pairs(IMAGES) do
-- get the content URL
local contentID = string.match(webURL, "%d+")
local contentURL = "rbxassetid://" .. contentID
local success, result = pcall(function()
local objects = game:GetObjects(contentURL)
return objects[1].Texture
end)
if success then
addEntryToDictionary(webURL, result)
else
addEntryToDictionary(webURL, "Error downloading decal")
end
task.wait()
end
print("Conversion complete")
-- close the dictionary
outputString = outputString .. "\n}"
-- print the dictionary
print(outputString)

IsLoaded

Khi tất cả các ban đầu Instances trong trò chơi đã kết thúc sao chép cho khách hàng, chức năng này trả về true.

Trừ khi chúng được cha mẹ hóa thành ReplicatedFirst , LocalScripts không chạy cho đến khi trò chơi đã tải xong.Các đoạn sau, chạy từ một LocalScript trong ReplicatedFirst cho đến khi trò chơi đã tải xong:


if not game:IsLoaded() then
game.Loaded:Wait()
end

Xem thêm:

  • Lệnh sao chép để có một tóm tắt chi tiết hơn về quá trình tải.
  • DataModel.Loaded , một sự kiện bắt lửa khi trò chơi đã được tải
  • Instance:WaitForChild() , một chức năng có thể được sử dụng để chờ đợi một cá nhân Instance sao lưu mà không cần phải chờ đợi toàn bộ trò chơi kết thúc tải.

Lợi Nhuận

Xem liệu khách hàng đã hoàn thành tải trò chơi lần đầu tiên hay chưa.

Mẫu mã

This sample demonstrates a custom loading screen with a basic TextLabel. The code should be placed in a LocalScript within ReplicatedFirst. To expand on this sample with loading screen animations, see the Custom Loading Screens article.

Custom Loading Screen

local Players = game:GetService("Players")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- Create a basic loading screen
local screenGui = Instance.new("ScreenGui")
screenGui.IgnoreGuiInset = true
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.BackgroundColor3 = Color3.fromRGB(0, 20, 40)
textLabel.Font = Enum.Font.GothamMedium
textLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8)
textLabel.Text = "Loading"
textLabel.TextSize = 28
textLabel.Parent = screenGui
-- Parent entire screen GUI to player GUI
screenGui.Parent = playerGui
-- Remove the default loading screen
ReplicatedFirst:RemoveDefaultLoadingScreen()
--wait(3) -- Optionally force screen to appear for a minimum number of seconds
if not game:IsLoaded() then
game.Loaded:Wait()
end
screenGui:Destroy()

SetPlaceId

()
Bảo Mật Plugin

Chức năng này đặt DataModel.PlaceId của game instance lên placeId đã cho.

Cài đặt cả DataModel.PlaceIdDataModel.GameId là bắt buộc để truy cập DataStoreService khi nơi được xuất bản chưa, ví dụ như tập tin .rbxl địa phương.Xem phía dưới để có một ví dụ.Lưu ý rằng việc có được quyền truy cập DataStoreService từ Studio yêu cầu cài đặt Bật truy cập Studio vào Dịch vụ API từ tấm Bảo mật trong Cài đặt trò chơi.


local DataStoreService = game:GetService("DataStoreService")
-- truy cập DataStore 'Data' bằng cách đặt PlaceId thành placeId và GameId thành universeId.
game:SetPlaceId(placeId)
game:SetUniverseId(universeId)
local dataStore = DataStoreService:GetDataStore("Data")

Tham Số

placeId: number

ID để thiết lập DataModel.PlaceId đến.

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

Lợi Nhuận

()

SetUniverseId

()
Bảo Mật Plugin

Chức năng này đặt DataModel.GameId của game instance hiện tại lên universeId đã cho.Điều này hữu ích khi kiểm tra các tệp .rbxl địa phương chưa được xuất bản lên Roblox.

Để truy cập DataStoreService ở một địa điểmchưa công bố, cả DataModel:SetUniverseId()DataModel:SetPlaceId() phải được cài đặt.

Tham Số

universeId: number

ID để thiết lập DataModel.GameId đến.

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

Lợi Nhuận

()

Sự Kiện

GraphicsQualityChangeRequest

Bắt lửa khi người dùng yêu cầu tăng hoặc giảm chất lượng đồ họa bằng cách sử dụng phím nóng.

Sự kiện này bắt lửa dưới các điều kiện sau:

  • Nếu người dùng nhấn F10, sự kiện này sẽ bắt lửa với một betterQuality đối số của true .
  • Nếu người dùng nhấn ShiftF10 , sự kiện này bắt lửa với một betterQuality argument của false .

Sự kiện này không cung cấp cấp độ chất lượng đồ họa hiện tại hoặc bao gồm tất cả các bản cập nhật cho chất lượng đồ họa.Ví dụ, các thay đổi được thực hiện trong menu thoát GUI chính không được đăng ký.

Bạn có thể lấy lại Enum.SavedQualitySetting bằng cách sử dụng UserGameSettings với đoạn sau:


UserSettings():GetService("UserGameSettings").SavedQualityLevel

Nếu cài đặt đồ họa của người dùng được đặt thành tự động thì Enum.SavedQualitySetting sẽ là Automatic .Hiện tại không có cách nào để các nhà phát triển có thể lấy đáng tin cậy chất lượng đồ họa hiện tại của máy của người dùng.

Tham Số

betterQuality: boolean

Whether người dùng đã yêu cầu tăng ( true ) hoặc giảm ( false ) chất lượng đồ họa.


Mẫu mã

Handling User Changes in Graphics Quality

game.GraphicsQualityChangeRequest:Connect(function(betterQuality)
if betterQuality then
print("The user has requested an increase in graphics quality!")
else
print("The user has requested a decrease in graphics quality!")
end
end)

Loaded

Sự kiện này bắt lửa trên khách hàng khi tất cả các Instances ban đầu trong trò chơi đã kết thúc sao chép sang khách hàng.

Trừ khi chúng được cha mẹ hóa thành ReplicatedFirst , LocalScripts không chạy cho đến khi trò chơi đã tải xong.Các đoạn sau, chạy từ một LocalScript trong ReplicatedFirst cho đến khi trò chơi đã tải xong:


if not game:IsLoaded() then
game.Loaded:Wait()
end

Xem thêm:

  • Lệnh sao chép để có một tóm tắt chi tiết hơn về quá trình tải.
  • DataModel.Loaded , một sự kiện bắt lửa khi trò chơi đã được tải
  • Instance:WaitForChild() , một chức năng có thể được sử dụng để chờ đợi một cá nhân Instance sao lưu mà không cần phải chờ đợi toàn bộ trò chơi kết thúc tải.