DataModel
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Model danych (zwykle znany jako po globalnej zmienne używanej do uzyskania do niej dostępu) jest korzeniem hierarchii rodzic-dziecko Roblox.Jego bezpośrednie dzieci są usługami, takimi jak Workspace i Lighting, które działają jako podstawowe komponenty graRoblox.
Przykłady kodu
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
Podsumowanie
Właściwości
Opisuje identyfikator użytkownika lub grupy, która posiada miejsce.
Opisuje Enum.CreatorType miejsce, czy miejsce jest własnością użytkownika czy grupa.
Opisuje identyfikator doświadczenia, do którego należy miejsce uruchamiane na serwerze.
Niefunkcjonalne. Historycznie opisano Enum.Genre miejsce jako ustawione na stronie internetowej Roblox.
Unikalny identyfikator dla instancji serwera gry w wykonaniu.
Reprezentuje, w jaki sposób gracze na serwerze są obsługiwani przez matchmaking.
Opisuje identyfikator miejsca uruchamianego na serwerze.
Opisuje wersję miejsca, na którym działa serwer.
Opisuje prywatny identyfikator serwera serwera, jeśli serwer jest prywatnym serwerem lub reserved server.
Opisuje UserId z Player właściciela prywatnego serwera, jeśli serwer jest prywatny.
Odwołanie do usługi Workspace .
Metody
Wiąże funkcję, która ma być wywołana przed wyłączeniem serwera.
Zwraca tabelę zawierającą podstawowe informacje o pracach wykonywanych przez planowarkę zadań.
Zwraca arkusz z Instances powiązanych z danym URL adresu zawartości.
Zwraca prawdę, jeśli klient po raz pierwszy zakończył ładowanie gry.
Ustawia DataModel.PlaceId aktualną instancję gry na podany identyfikator miejsca.
Ustawia DataModel.GameId aktualną instancję gry na daną universalId.
Zwraca usługę określoną przez podany klasztor, jeśli została już utworzona, błędy za nieważną nazwę.
Zwraca usługę z nazwą klasy żądaną, tworząc ją, jeśli nie istnieje.
Zdarzenia
Wybucha, gdy użytkownik wysyła powiadomienie i zwiększa lub zmniejsza jakość grafiki za pomocą skrótów klawiszowych.
Ogień na klientzie, gdy gra po raz pierwszy zakończy ładowanie.
Wypala się, gdy obecne miejsce jest opuszczane.
Wystrzeliwany, gdy usługa jest tworzona.
Wystrzeliwany, gdy usługa ma zostać usunięta.
Właściwości
CreatorId
Właściwość ta opisuje identyfikator użytkownika lub grupy, która posiada miejsce.Jeśli właściwość DataModel.CreatorType jest 'Użytkownikiem', to CreatorId będzie Player.UserId właścicielem miejsca.Jeśli DataModel.CreatorType jest 'Grupa' to CreatorId będzie ID grupy, która posiada miejsce.
Przykłady kodu
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
Właściwość ta opisuje Enum.CreatorType miejsce, czy miejsce jest własnością użytkownika czy grupa.
Jeśli Enum.CreatorType jest 'Użytkownikiem, właściwość DataModel.CreatorId opisze UserId konto, które posiada gra.Jeśli typ twórcy jest 'Grupa', to opisze tożsamość ID grupy.
Przykłady kodu
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
Właściwość ta opisuje ID doświadczenia, do którego należy miejsce uruchamiane na serwerze.
Zobacz także
- DataModel.PlaceId , który opisuje ID miejsca uruchamianego na serwerze
- DataModel.JobId , który jest unikalnym identyfikatorem dla instancji gry serwerowej uruchamianej
- TeleportService , który jest usługą, którą można używać do transportu Players między grami
Genre
Właściwość ta jest złamana i nie powinna być używana.
Właściwość ta historycznie opisywała Enum.Genre miejsce jako ustawione na stronie internetowej Roblox.
Ta właściwość, wraz z DataModel.GearGenreSetting, nie funkcjonuje już prawidłowo ze względu na gatunki istniejące na stronie internetowej Roblox, które nie są odzwierciedlone w menu Enum.Genre.W wynikpróba odczytania tej właściwości może wywołać błąd.
JobId
Właściwość ta jest unikalnym identyfikatorem dla uruchomionej instancjaserwera gry.Jest to unikalny identyfikator (UUID), co oznacza, że żaden z dwóch serwerów, obecnych lub przeszłych, nigdy nie będzie miał tego samego ID.
Domyślnie do pustej struny w Studio.
Zobacz także
- TeleportService:GetPlayerPlaceInstanceAsync() który może być użyty do odzyskania DataModel.JobId serwera obecnego użytkownika.
- TeleportService:TeleportToPlaceInstance() który może być użyty do teleportacji Player na określony serwer.
- DataModel.PrivateServerId opisuje ID prywatnego serwera, do którego należy instancja serwera gry.
- HttpService:GenerateGUID() , funkcja, którą można używać do generowania własnych identyfikatorów UUID.
MatchmakingType
Właściwość ta reprezentuje sposób, w jaki gracze na serwerze są obsługiwani przez matchmaking.Gracze z różnymi MatchmakingTypes nie mogą być na tym samym serwerze ani się do niego teleportować.
Zauważ, że ta właściwość jest ważna tylko na serwerze DataModel i będzie to wartość Enum.MatchmakingType.Default dla wszystkich klientów, więc odwołaj się tylko do tej właściwości wewnątrz serwerowej Script .
PlaceId
Właściwość ta opisuje identyfikator miejsca uruchamianego na serwerze.
Jeśli miejsce nie zostało opublikowane w Roblox, ten identyfikator będzie odpowiadał szablonowi używanemu.
Zobacz także
- DataModel.GameId , który opisuje ID doświadczenia, do którego należy obecne miejsce
- DataModel.JobId , który jest unikalnym identyfikatorem dla instancji gry serwerowej uruchamianej
- TeleportService , który jest usługą, którą można używać do transportu Players między miejscami
PlaceVersion
Właściwość ta opisuje wersję miejsca, na którym działa serwer.
Ta numeracja wersji odpowiada numerowi wersji wyświetlanemu w sekcji Historia wersji ustawień miejsca.Nie jest to obecna wersja klienta Roblox.Właściwość ta wynosi 0 dla wszystkich niew opublikowanych doświadczeń.
Kiedy instancja serwera jest tworzona dla miejsca, używa ona obecnej wersji miejsca.Jeśli miejsce zostanie później zaktualizowane, gdy ten serwer działa, serwer pozostanie przy obecnej wersji.
Właściwość ta może być użyta do wyświetlenia ScreenGui pokazującej obecną wersję gry do Players w celu pomocy w debugowaniu.
Przykłady kodu
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
Właściwość ta opisuje prywatny identyfikator serwera serwera, jeśli serwer jest prywatnym serwerem.
Jeśli serwer nie jest prywatnym serwerem, właściwość ta będzie pustą ciąg.
Prywatne serwery
Prywatne serwery odnoszą się do obserwuje:
- Prywatne serwery, które użytkownicy mogą kupić na stronie gier
- Zarezerwowane serwery, prywatne serwery stworzone przez programistę za pomocą TeleportService:ReserveServer()
Prywatny serwer ID vs ID pracy
Identyfikator prywatnego serwera na serwerze różni się od DataModel.JobId. Identyfikator JobId jest unikalnym identyfikatorem obecnej instancji serwera.
Prywatne serwery (prywatne lub zarezerwowane serwery) mogą mieć wiele instancji serwerów powiązanych z nimi w czasie.Dzieje się tak, ponieważ choć tylko jedna instancja serwera może być uruchomiona na raz na prywatnym serwerze, nowe instancje serwerów mogą otwierać się i zamykać, gdy gracze dołączają i opuszczają grę.Na przykład, żadna instancja serwera nie jest uruchomiona, gdy nikt nie gra na serwerze.Prywatny identyfikator serwera będzie konsekwentny we wszystkich tych instancjach serwera, a DataModel.JobId będzie unikalny dla każdej z nich.
Zobacz także:
- DataModel.PrivateServerOwnerId , właściwość opisująca właściciela prywatnego serwera
- TeleportService:ReserveServer() , funkcja, która tworzy zarezerwowany serwer
Przykłady kodu
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
Właściwość ta opisuje z posiadającą prywatny serwer, jeśli serwer jest prywatne.
Jeśli serwer jest standardowym lub zarezerwowanym serwerem, właściwość ta zostanie ustawiona na 0.
Właściwość ta może być użyta do identyfikacji, czy Player jest właścicielem prywatnego serwera, na przykład:
local Players = game:GetService("Players")
-- czy to jest prywatny serwer?
if game.PrivateServerId ~= "" and game.PrivateServerOwnerId ~= 0 then
-- słuchaj nowych graczy dodawanych
Players.PlayerAdded:Connect(function(player)
-- sprawdź, czy gracz jest właścicielem serwera
if player.UserId == game.PrivateServerOwnerId then
print("The private server owner has joined the game")
end
end)
end
Zobacz także:
- DataModel.PrivateServerId , właściwość opisująca unikalny identyfikator prywatnego i reserved servers
Przykłady kodu
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())
Metody
BindToClose
Wiąże funkcję, która ma być wywołana przed wyłączeniem serwera.Jeśli wiązana funkcja akceptuje parametr, przekazuje Enum.CloseReason określając powód wyłączenia serwera.
Możesz wiązać wiele funkcji za pomocą powtarzanego wezwania BindToClose(). Powiązane funkcje są wzywane równolegle i uruchamiane jednocześnie.
Serwer doświadczeń czeka 30 sekund, aż wszystkie związane funkcje przestaną działać, zanim się wyłączy.Po 30 sekundach serwer wyłącza się, nawet jeśli funkcje nadal działają.
Aby zweryfikować, że obecna sesja nie jest w Roblox Studio, użyj RunService:IsStudio().Uniemożliwia to ukończenie wiązanych funkcji w sesjach testowania offline.
Kiedy używasz DataStoreService, powinieneś również użyć BindToClose, aby wiązać funkcję, która zapisuje wszystkie niew zapisane dane do DataStores.Uniemożliwia to utratę danych, jeśli serwer zostanie wyłączony nieoczekiwanie.
Zobacz także:
- Enum.CloseReason z powodów zamknięcia serwera doświadczeń.
- PluginGui:BindToClose() , który wiąże funkcję z przyciskiem zamknięcia PluginGui .
Parametry
Funkcja nazywana przed zamknięciem serwera doświadczeń.Jeśli wiązana funkcja akceptuje parametr, przekazuje Enum.CloseReason określając powód wyłączenia serwera.
Zwroty
Przykłady kodu
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
Zwraca tabelę zawierającą podstawowe informacje o pracach wykonywanych przez planowarkę zadań.
W obliczeniach planownik zadań jest systemem odpowiedzialnym za wykonywanie kluczowych zadań w odpowiednich odstępach czasu.
Możesz również znaleźć statystyki planera zadań na żywo w oknie planera zadań w Roblox Studio.
Pierwsza pozycja w tabeli zwrócona jest słownik referencyjny zawierający dostępne statystyki (lub nagłówki). Ma następujący format:
{["name"] = "name",["averageDutyCycle"] = "averageDutyCycle",["averageStepsPerSecond"] = "averageStepsPerSecond",["averageStepTime"] = "averageStepTime",["averageError"] = "averageError",["isRunning"] = "isRunning",}
Następne wpisy w tabeli zwrócone są słownikami zawierającymi powyższe statystyki dla prac wykonywanych przez planowarkę zadań. Na przykład:
{["name"] = "Heartbeat",["averageDutyCycle"] = 0,["averageStepsPerSecond"] = 0,["averageStepTime"] = 0,["averageError"] = 0,["isRunning"] = false,}
Zobacz także:
Zwroty
Tabela zawierająca informacje o pracach wykonywanych przez planowarkę zadań, patrz powyżej dla formatu.
Przykłady kodu
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
Ta metoda zwraca tablicę Instances powiązanych z danym URL adresu zawartości.Można go używać do wstawiania treści z biblioteki Roblox.Nie można wstawić Sounds za pomocą tej metody, ponieważ nie mają związanego z nimi Instance i mają tylko URL zawartości.
W przeciwieństwie do InsertService:LoadAsset(), DataModel:GetObjects() nie wymaga, aby zasób był "zaufany", co oznacza, że zasób nie musi być posiadany przez zalogowanego użytkownika lub stworzony przez Roblox, aby został wstawiony.Jeśli jednak zasób nie należy do zalogowanego użytkownika, musi być dostępny bezpłatnie.
Ze względu na kontekst bezpieczeństwa tej funkcji może być używana tylko przez wtyczki lub pasek poleceń.Dla alternatywy, którą można używać w Scripts i LocalScripts, zobacz InsertService:LoadAsset() .
Parametry
Podany URL treści.
Zwroty
Zbiór Instances powiązany z URL-em zawartości.
Przykłady kodu
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
Gdy wszystkie początkowe Instances w grze zakończą replikację do klienta, ta funkcja zwraca prawdę.
Chyba że są one powiązane z ReplicatedFirst, LocalScripts nie uruchamiają się, dopóki gra nie zostanie załadowana.Następujący kod, uruchomiony z LocalScript w ReplicatedFirst wyświetla się do czasu załadowania gry:
if not game:IsLoaded() thengame.Loaded:Wait()end
Zobacz także:
- Porządek replikacji dla bardziej szczegółowego podsumowania procesu ładowania.
- DataModel.Loaded , wydarzenie, które wystrzeliwuje się, gdy gra się załadowała
- Instance:WaitForChild() , funkcja, którą można używać, aby poczekać na indywidualne Instance powtórzenie bez konieczności czekania, aż cała gra zostanie załadowana.
Zwroty
Czy klient zakończył ładowanie gry po raz pierwszy.
Przykłady kodu
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
Funkcja ta ustawia DataModel.PlaceId instancję gry na podany adres ID.
Ustawienie obu DataModel.PlaceId i DataModel.GameId jest wymagane do uzyskania dostępu do DataStoreService gdy miejsce nie jest opublikowane, na przykład lokalny plik .rbxl.Zobacz poniżej przykład.Zauważ, że uzyskanie dostępu DataStoreService z Studio wymaga ustawienia Włącz dostęp Studio do usług API z panelu Bezpieczeństwo w Ustawieniach gry.
local DataStoreService = game:GetService("DataStoreService")-- dostęp do DataStore 'Data' poprzez ustawienie PlaceId na placeId i GameId na universeId.game:SetPlaceId(placeId)game:SetUniverseId(universeId)local dataStore = DataStoreService:GetDataStore("Data")
Parametry
ID do ustawienia DataModel.PlaceId .
Zwroty
SetUniverseId
Funkcja ta ustawia DataModel.GameId obecną instancję gry na dany universeId.Jest to przydatne podczas testowania lokalnych plików .rbxl, które nie zostały opublikowane w Roblox.
Aby uzyskać dostęp do DataStoreService w nieopublikowanym miejsce, należy ustawiaćzarówno DataModel:SetUniverseId() jak i DataModel:SetPlaceId().
Parametry
ID do ustawienia DataModel.GameId .
Zwroty
Zdarzenia
GraphicsQualityChangeRequest
Wystrzeliwuje, gdy użytkownik żąda zwiększenia lub zmniejszenia jakości grafiki za pomocą skrótów klawiszowych.
To wydarzenie wystrzeliwuje się w następujących warunkach:
- Jeśli użytkownik naciśnie , to wydarzenie uruchamia się z argumentem .
- Jeśli użytkownik naciśnie , to wydarzenie uruchamia się z argumentem >.
To wydarzenie nie zapewnia obecnego poziomu jakości grafiki lub nie obejmuje wszystkich aktualizacji jakości grafiki.Na przykład zmiany wprowadzone w menu ucieczki GUI głównego nie są rejestrowane.
Możesz odzyskać Enum.SavedQualitySetting użytkownika za pomocą UserGameSettings za pomocą następującego kodu:
UserSettings():GetService("UserGameSettings").SavedQualityLevel
Jeśli ustawienia grafiki użytkownika są ustawione na automatyczne, wówczas Enum.SavedQualitySetting będzie Automatic.Obecnie nie ma możliwości, aby programiści niezawodnie uzyskali obecny poziom jakości grafiki na maszynie użytkownika.
Parametry
Czy użytkownik zażądał zwiększenia ( prawda ) lub zmniejszenia ( fałsz ) jakości grafiki.
Przykłady kodu
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
To wydarzenie uruchamia się na klientzie, gdy wszystkie początkowe Instances w grze zakończą replikację do klienta.
Chyba że są one powiązane z ReplicatedFirst, LocalScripts nie uruchamiają się, dopóki gra nie zostanie załadowana.Następujący kod, uruchomiony z LocalScript w ReplicatedFirst wyświetla się do czasu załadowania gry:
if not game:IsLoaded() thengame.Loaded:Wait()end
Zobacz także:
- Porządek replikacji dla bardziej szczegółowego podsumowania procesu ładowania.
- DataModel.Loaded , wydarzenie, które wystrzeliwuje się, gdy gra się załadowała
- Instance:WaitForChild() , funkcja, którą można używać, aby poczekać na indywidualne Instance powtórzenie bez konieczności czekania, aż cała gra zostanie załadowana.