DataModel
*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.
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ư Workspace và Lighting , 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.
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
Mô tả ID của người dùng hoặc nhóm sở hữu địa điểm.
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.
Mô tả ID của trải nghiệm mà nơi chạy trên máy chủ thuộc về.
Không hoạt động. Lịch sử mô tả Enum.Genre của nơi được đặt trên trang web Roblox.
Một nhận dạng duy nhất cho máy chủ trò chơi ví dụ / trường hợpchạy.
Biểu diễn cách người chơi trong máy chủ được xử lý bởi mai mối.
Mô tả ID của nơi chạy trên máy chủ.
Mô tả phiên bản của nơi máy chủ đang chạ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 hoặc là reserved server .
Mô tả UserId của Player mà sở hữu máy chủ riêng nếu máy chủ là riêng tư.
Một tham chiếu đến dịch vụ Workspace .
Phương Pháp
Gắn một chức năng phải được gọi trước khi máy chủ tắt.
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ụ.
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.
Đặt DataModel.PlaceId của game instance hiện tại vào vị trí placeId đã cho.
Đặt DataModel.GameId của game instance hiện tại vào universeId đã cho.
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
Nổ khi người dùng yêu cầu và tăng hoặc giảm chất lượng đồ họa bằng cách sử dụng phím nóng.
Lửa bùng phát trên khách hàng khi trò chơi kết thúc tải lần đầu tiên.
Bắt lửa khi nơi hiện tại được thoát.
Bị sa thải khi một dịch vụ được tạo.
Bị sa thải khi một dịch vụ sắp bị xóa.
Thuộc Tính
CreatorId
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 là '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
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
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 là '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
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
GameId
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
Genre
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
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
- TeleportService:GetPlayerPlaceInstanceAsync() có thể được sử dụng để lấy lại DataModel.JobId của máy chủ hiện tại của người dùng.
- TeleportService:TeleportToPlaceInstance() có thể được sử dụng để dịch chuyển một Player sang một máy chủ cụ thể.
- DataModel.PrivateServerId mô tả ID của máy chủ riêng mà instance máy chủ trò chơi thuộc về.
- HttpService:GenerateGUID() , một chức năng có thể được sử dụng để tạo UUID riêng của bạn.
MatchmakingType
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
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
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.
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
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:
- Máy chủ riêng mà người dùng có thể mua từ trang trò chơi
- Máy chủ dự trữ, máy chủ riêng tạo bởi nhà phát triển sử dụng TeleportService:ReserveServer()
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:
- DataModel.PrivateServerOwnerId , một thuộc tính mô tả chủ sở hữu của một máy chủ riêng
- TeleportService:ReserveServer() , một chức năng tạo một máy chủ dự trữ
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.
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
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:
- DataModel.PrivateServerId , một thuộc tính mô tả ID duy nhất của riêng tư và reserved servers
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.
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())
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:
- Enum.CloseReason vì lý do máy chủ trải nghiệm bị tắt.
- PluginGui:BindToClose() , which binds a function to a PluginGui nút đóng.
Tham Số
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ủ.
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.
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.
game:BindToClose(function(closeReason)
print(`Closing with reason {closeReason}`)
task.wait(3)
print("Done")
end)
GetJobsInfo
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.
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
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 Scripts và LocalScripts , xem InsertService:LoadAsset() .
Tham Số
URL nội dung đã cho.
Lợi Nhuận
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.
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.
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() thengame.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.
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
Chức năng này đặt DataModel.PlaceId của game instance lên placeId đã cho.
Cài đặt cả DataModel.PlaceId và DataModel.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ố
ID để thiết lập DataModel.PlaceId đến.
Lợi Nhuận
SetUniverseId
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() và DataModel:SetPlaceId() phải được cài đặt.
Tham Số
ID để thiết lập DataModel.GameId đến.
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ố
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ã
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() thengame.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.