DataModel

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar

Das Datenmodell (bekannt als game nach der globalen Variable, die zum Zugriff darauf verwendet wird) ist die Wurzel der Roblox-Eltern-Kind-Hierarchie.Seine direkten Kinder sind Dienste wie Workspace und Lighting, die als grundlegende Komponenten eines Roblox-Spiels fungieren.

Code-Beispiele

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

Zusammenfassung

Eigenschaften

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt die ID des Benutzers oder der Gruppe, die den Ort besitzt.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt das Enum.CreatorType des Ortes, ob der Ort von einem Benutzer oder einer Gruppe besessen wird.

  • Schreibgeschützt
    Nicht repliziert
    Roblox-Skript-Sicherheit
    Parallel lesen
  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt die ID des Erlebnisses, zu dem sich der Ort auf dem Server gehört.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen
    Veraltet

    Nicht funktionsfähig. Historisch beschrieben das Enum.Genre des Ortes als auf der Roblox-Website festgelegt.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Eine eindeutige Kennung für die ausgeführte Instanz.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Repräsentiert, wie Spieler auf dem Server durch Matchmaking verwaltet werden.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt die ID des Ortes, der auf dem Server ausgeführt wird.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt die Version des Ortes, auf dem der Server ausgeführt wird.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt die private Server-ID des Servers, wenn der Server ein privater Server oder ein reserved server ist.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt das UserId des Player, das den privaten Server besitzt, wenn der Server privater Serverist.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Eine Referenz auf den Workspace.

Methoden

  • BindToClose(function : function):()

    Bindet eine Funktion, die vor dem Herunterfahren des Servers aufgerufen wird.

  • Plugin-Sicherheit

    Gibt eine Tabelle zurück, die grundlegende Informationen über die von der Aufgabenplaner ausgeführten Jobs enthält.

  • GetObjects(url : ContentId):Instances
    Plugin-Sicherheit
    Veraltet

    Gibt eine Liste von Instances zurück, die mit der angegebenen Inhalts-URL verbunden ist.

  • Gibt wahr zurück, wenn der Client das Spiel zum ersten Mal geladen hat.

  • SetPlaceId(placeId : number):()
    Plugin-Sicherheit

    Setzt das DataModel.PlaceId der aktuellen Spielinstanz auf die angegebene placeId.

  • SetUniverseId(universeId : number):()
    Plugin-Sicherheit

    Setzt das DataModel.GameId der aktuellen Spielinstanz auf die angegebene Universum-ID.

Methoden von ServiceProvider übernommen
  • Parallel schreiben

    Gibt den Dienst zurück, der vom angegebenen className angegeben wurde, wenn er bereits erstellt wurde, Fehler für einen ungültigen Namen.

  • Gibt den Dienst mit dem angeforderten Klassennamen zurück, erstellt ihn, wenn er nicht existiert.

Ereignisse

Ereignisse von ServiceProvider übernommen

Eigenschaften

CreatorId

Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft beschreibt die ID des Benutzers oder der Gruppe, die den Ort besitzt.Wenn das Eigenschaft DataModel.CreatorType Eigenschaft ist 'Benutzer' dann wird CreatorId der Player.UserId des Eigentümersein.Wenn das DataModel.CreatorType ist 'Gruppe' dann wird CreatorId die ID der Gruppe sein, die den Ort besitzt.

Code-Beispiele

Dieses Codebeispiel druckt eine Ausgabe aus, wenn der Benutzer, der das Spiel besitzt, oder ein Mitglied der Gruppe, die das Spiel besitzt, dem Server beitritt.

Um dieses Skript auszuführen, platzieren Sie es innerhalb eines Script in ServerScriptService

Erkennen, wenn der Platzbesitzer dem Spiel beitritt

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft beschreibt die Enum.CreatorType des Ortes, ob der Ort von einem Benutzer oder einer Gruppe besessen wird.

Wenn das Enum.CreatorType der 'Benutzer' ist, beschreibt die DataModel.CreatorId Eigenschaft die UserId des Kontos, das das Spiel besitzt.Wenn der CreatorType 'Gruppe' ist, wird er die Gruppen-ID beschreiben.

Code-Beispiele

Dieses Codebeispiel druckt eine Ausgabe aus, wenn der Benutzer, der das Spiel besitzt, oder ein Mitglied der Gruppe, die das Spiel besitzt, dem Server beitritt.

Um dieses Skript auszuführen, platzieren Sie es innerhalb eines Script in ServerScriptService

Erkennen, wenn der Platzbesitzer dem Spiel beitritt

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

Schreibgeschützt
Nicht repliziert
Roblox-Skript-Sicherheit
Parallel lesen

GameId

Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft beschreibt die ID des Erlebnisses, zu dem sich der Ort auf dem Server gehört.

Siehe auch

  • DataModel.PlaceId , der die ID des Ortes beschreibt, der auf dem Server ausgeführt wird
  • DataModel.JobId , der ein eindeutiger identifikator für die server-spielinstanz ist, die ausgeführt wird
  • TeleportService , der ein dienst ist, der verwendet werden kann, um Players zwischen spielen zu transportieren
Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft ist fehlerhaft und sollte nicht verwendet werden.

Diese Eigenschaft beschrieb historisch das Enum.Genre des Ortes, das auf der Roblox-Website festgelegt wurde.

Diese Eigenschaften, zusammen mit DataModel.GearGenreSetting, funktioniert aufgrund der auf der Roblox-Website existierenden Genres nicht mehr richtig, die nicht im Enum.Genre Enum aufgeführt sind.Als Ergebnis kann das Versuch, diese Eigenschaft zu lesen, einen Fehler werfen.

JobId

Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft ist eine eindeutige Kennung für die ausgeführte Instanz.Es ist eine universell eindeutige Kennung (UUID), was bedeutet, dass keine zwei Server, vergangen oder gegenwärtig, jemals die gleiche ID haben werden.

Standard ist eine leere Zeichenkette in Studio.

Siehe auch

MatchmakingType

Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft repräsentiert, wie Spieler auf dem Server durch Matchmaking behandelt werden.Spieler mit unterschiedlichen MatchmakingTypes können nicht auf demselben Server teleportiert werden.

Beachten Sie, dass diese Eigenschaft nur auf dem Server gültig ist DataModel und es der Wert Enum.MatchmakingType.Default für alle Clients sein wird, also referenzieren Sie diese Eigenschaft nur innerhalb einer serverseitigen Script .

PlaceId

Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft beschreibt die ID des Ortes, der auf dem Server ausgeführt wird.

Wenn der Ort nicht auf Roblox veröffentlicht wurde, entspricht diese ID der verwendeten Vorlage.

Siehe auch

  • DataModel.GameId , der die ID der Erfahrung beschreibt, zu der der aktuelle Ort gehört
  • DataModel.JobId , der ein eindeutiger identifikator für die server-spielinstanz ist, die ausgeführt wird
  • TeleportService , der ein dienst ist, der verwendet werden kann, um Players zwischen orten zu transportieren

PlaceVersion

Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft beschreibt die Version des Ortes, auf dem der Server ausgeführt wird.

Diese Versionsnummer entspricht der angezeigten Versionsnummer unter der Version-Historie -Sektion der Einstellungen des Ortes.Es ist nicht die aktuelle Version des Roblox-Clients.Diese Eigenschaft ist für alle nicht veröffentlichten Erlebnisse 0.

Wenn für einen Ort eine Serverinstanz erstellt wird, verwendet sie die aktuelle Version des Ortes.Wenn der Ort später aktualisiert wird, während dieser Server ausgeführt wird, bleibt der Server bei seiner aktuellen Version.

Dieses Eigenschaft kann verwendet werden, um eine ScreenGui anzuzeigen, die die aktuelle Version des Spiels zu Players zeigt, um beim Debuggen zu helfen.

Code-Beispiele

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft beschreibt die private Server-ID des Servers, wenn der Server ein privater Server ist.

Wenn der Server kein privater Server ist, dann wird diese Eigenschaft eine leere Stringsein.

Privatserver

Private Server beziehen sich auf gefolgte Profile:

PrivateServerId gegen JobId

Die PrivateServerId eines Servers unterscheidet sich von der DataModel.JobId. Die JobId ist die eindeutige Kennung der aktuellen Instanz.

Private Server (private oder reservierte Server) können im Laufe der Zeit mehrere Serverinstanzen haben, die mit ihnen verbunden sind.Das liegt daran, dass, obwohl nur eine Serverinstanz gleichzeitig für einen privaten Server ausgeführt werden kann, neue Serverinstanzen sich öffnen und schließen können, wenn Spieler beitreten und das Spiel verlassen.Zum Beispiel läuft keine Serverinstanz, wenn niemand auf dem Server spielt.Die PrivateServerId wird für alle diese Serverinstanzen konsistent sein, und die DataModel.JobId wird für jede einzigartig sein.

Siehe auch:

Code-Beispiele

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft beschreibt das UserId des Player, das den privaten Server besitzt, wenn der Server privater Serverist.

Wenn der Server ein Standard- oder reservierter Server ist, wird diese Eigenschaft auf 0 gesetzt.

Dieses Eigenschaft könnte verwendet werden, um zu identifizieren, ob ein Player der Besitzer des privaten Servers ist, zum Beispiel:


local Players = game:GetService("Players")
-- ist das ein privater server?
if game.PrivateServerId ~= "" and game.PrivateServerOwnerId ~= 0 then
-- neue spieler hören, die hinzugefügt werden
Players.PlayerAdded:Connect(function(player)
-- prüfen, ob der spieler der eigentümerist
if player.UserId == game.PrivateServerOwnerId then
print("The private server owner has joined the game")
end
end)
end

Siehe auch:

Code-Beispiele

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft ist ein Verweis auf den Workspace Dienst. Sie zeigt immer auf Workspace und wird nie nil sein.

Methoden

BindToClose

()

Bindet eine Funktion, die vor dem Herunterfahren des Servers aufgerufen wird.Wenn die gebundene Funktion einen Parameter akzeptiert, gibt sie Enum.CloseReason an, um den Grund für den Serverabschluss anzugeben.

Du kannst mehrere Funktionen binden, indem du BindToClose() mehrmals aufrufst. Verbundene Funktionen werden parallel aufgerufen und laufen gleichzeitig.

Der Erlebnissерver wartet 30 Sekunden, bis alle gebundenen Funktionen aufhören zu laufen, bevor er heruntergefahren wird.Nach 30 Sekunden schaltet der Server ab, auch wenn Funktionen immer noch laufen.

Um zu überprüfen, dass die aktuelle Sitzung nicht in Roblox Studio ist, verwende RunService:IsStudio().Dies verhindert, dass gebundene Funktionen ihre Laufzeit in Offline-Test-Sitzungen abschließen.

Wenn du DataStoreService verwendest, solltest du auch BindToClose verwenden, um eine Funktion zu binden, die alle nicht gespeicherten Daten auf DataStores speichert.Dies verhindert Datenverlust, wenn der Server unerwartet heruntergefahren wird.

Siehe auch:

Parameter

function: function

Eine Funktion, die vor dem Herunterfahren des Erlebnissерvers aufgerufen wird.Wenn die gebundene Funktion einen Parameter akzeptiert, gibt sie Enum.CloseReason an, um den Grund für den Serverabschluss anzugeben.

Standardwert: ""

Rückgaben

()

Code-Beispiele

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)

Das folgende Beispiel druckt den Grund für das Schließen auf die Ausgabe aus.Es druckt Done nach drei Sekunden aus und ermöglicht es Roblox, den Erlebnissерver herunterzufahren.

Der nahe Grund entspricht einem der Werte in Enum.CloseReason.

Bindung an und Handhabung des Spiel-Shutdowns

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

GetJobsInfo

Plugin-Sicherheit

Gibt eine Tabelle zurück, die grundlegende Informationen über die von der Aufgabenplaner ausgeführten Jobs enthält.

Bei der Berechnung ist ein Aufgabenplaner ein System, das für die Ausführung wichtiger Aufgaben in den angezeigten Intervallen verantwortlich ist.

Du kannst auch Live-Aufgabenplanungsstatistiken im Aufgabenplaner-Fenster in Roblox Studio finden.

Die erste Einträge in der Tabelle, die zurückgegeben werden, sind ein Referenzlexikon mit den verfügbaren Statistiken (oder Überschriften). Es ist im folgenden Format:


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

Die nachfolgenden Einträge in der Tabelle sind Wörterbücher, die die oben genannten Statistiken für von der Aufgabenplaner ausgeführte Jobs enthalten. Zum Beispiel:


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

Siehe auch:


Rückgaben

Eine Tabelle mit Informationen über die von der Aufgabenplaner ausgeführten Jobs, siehe oben für das Format.

Code-Beispiele

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
Plugin-Sicherheit

Diese Methode gibt eine Liste von Instances zurück, die mit der angegebenen Inhalts-URL verbunden ist.Es kann verwendet werden, um Inhalte aus der Roblox-Bibliothek einzufügen.Es ist nicht möglich, Sounds mit dieser Methode einzufügen, da sie keine Instance mit sich haben und nur eine Inhalts-URL haben.

Im Gegensatz zu InsertService:LoadAsset() muss DataModel:GetObjects() kein Asset "vertrauenswürdig" sein, d. h. ein Asset muss nicht vom angemeldeten Benutzer oder von Roblox besessen werden, um eingefügt zu werden.Wenn das Asset jedoch nicht vom angemeldeten Benutzer besessen wird, muss es frei verfügbar sein.

Aufgrund des Sicherheitskontextes dieser Funktion kann sie nur von Plugins oder der Befehlsleiste verwendet werden.Für eine Alternative, die in Scripts und LocalScripts verwendet werden kann, siehe InsertService:LoadAsset() .

Parameter

url: ContentId

Die angegebene Inhalts-URL.

Standardwert: ""

Rückgaben

Instances

Ein Array von Instances, das mit der Inhalts-URL verbunden ist.

Code-Beispiele

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)

Die Inhalts-ID eines Decal auf der Roblox-Website ist mit einer Decal``Instance Inhalts-ID der Textur und nicht mit der tatsächlichen Inhalts-ID der Textur verbunden.

Der Code unten wird DataModel:GetObjects() verwenden, um Decal Objekte einzufügen und ihre Decal.Texture Eigenschaft zu lesen, um die Bildinhalts-IDs zu erhalten.

Um dieses Codebeispiel zu verwenden, geben Sie die Web-URLs der Abzeichen ein, die Sie in die im Array mit dem Namen BILDER (als Zeichenfolgen) konvertieren möchten.Ein Wörterbuch mit den konvertierten Texturen wird ausgegeben.

Serienumwandlung von Bild-IDs

local IMAGES = {
-- Füge Decal-Web-URLs in einem Array hier ein (als Zeichenketten)
}
-- öffne das wörterbuch
local outputString = "textures = {"
-- funktion zur ergänzung eines neuen eintrags im wörterbuch (als string)
local function addEntryToDictionary(original, new)
outputString = outputString
.. "\n" -- neue zeile
.. " " -- indentieren
.. '["'
.. original
.. '"]' -- schlüssel
.. ' = "'
.. new
.. '",' -- wert
end
print("Starting conversion")
for _, webURL in pairs(IMAGES) do
-- erhalte die Inhalts-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")
-- wörterbuch schließen
outputString = outputString .. "\n}"
-- das wörterbuch drucken
print(outputString)

IsLoaded

Wenn alle initialen Instances im Spiel mit dem Client repliziert sind, gibt diese Funktion true zurück.

Es sei denn, sie werden zu ReplicatedFirst überlassen, LocalScripts laufen nicht, bis das Spiel geladen ist.Das folgende Snippet, ausgeführt von einem LocalScript in ReplicatedFirst gibt bis das Spiel geladen ist:


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

Siehe auch:

  • Replikations顺序 für eine detailliertere Zusammenfassung des Ladeprozesses.
  • DataModel.Loaded , ein ereignis, das abgefeuert wird, wenn das spiel geladen wurde
  • Instance:WaitForChild() , eine funktion, die verwendet werden kann, um auf ein einzelnes Instance zu warten, ohne warten zu müssen, bis das gesamte spiel geladen ist.

Rückgaben

Ob der Client das Spiel zum ersten Mal fertig geladen hat.

Code-Beispiele

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

()
Plugin-Sicherheit

Diese Funktion legt die DataModel.PlaceId der Spielinstanz auf die angegebene PlaceID fest.

Die Einstellung von both DataModel.PlaceId und DataModel.GameId ist erforderlich, um auf DataStoreService zuzugreifen, wenn der Ort unveröffentlicht wird, zum Beispiel eine lokale .rbxl Datei.Siehe unten für ein Beispiel.Beachten Sie, dass der Zugriff auf Studio von Studio aus Zugriff auf API-Dienste erfordert die Einstellung Studio-Zugriff auf API-Dienste aktivieren aus dem Sicherheitsfeld in Spiel-Einstellungen .


local DataStoreService = game:GetService("DataStoreService")
-- Zugriff auf DataStore 'Data' durch Festlegen von PlaceId auf placeId und GameId auf universeId.
game:SetPlaceId(placeId)
game:SetUniverseId(universeId)
local dataStore = DataStoreService:GetDataStore("Data")

Parameter

placeId: number

Die ID, um das DataModel.PlaceId festzulegen.

Standardwert: ""

Rückgaben

()

SetUniverseId

()
Plugin-Sicherheit

Diese Funktion legt die DataModel.GameId des aktuellen Spielinstanz auf die angegebene Universum-ID fest.Dies ist nützlich, wenn lokale .rbxl-Dateien getestet werden, die nicht auf Roblox veröffentlicht wurden.

Um auf die DataStoreService in einem nicht veröffentlichten Ort zuzugreifen, müssen sowohl DataModel:SetUniverseId() als auch DataModel:SetPlaceId() festlegenwerden.

Parameter

universeId: number

Die ID, um das DataModel.GameId festzulegen.

Standardwert: ""

Rückgaben

()

Ereignisse

GraphicsQualityChangeRequest

Feuert, wenn der Benutzer eine Erhöhung oder Verringerung der Grafikqualität mit den Hotkeys anfordert.

Dieses Ereignis feuert unter den folgenden Bedingungen ab:

  • Wenn der Benutzer F10 drückt, wird dieses Ereignis mit einem betterQuality Argument von true ausgelöst.
  • Wenn der Benutzer drückt, feuert dieses Ereignis mit einem Argument von ab.

Dieses Ereignis bietet nicht die aktuelle Grafikqualitätsstufe oder deckt alle Updates der Grafikqualität ab.Zum Beispiel werden Änderungen, die in dem Kern-GUI-Fluchtm menü vorgenommen wurden, nicht registriert.

Du kannst die eines Benutzers abrufen, indem du die folgende Schnelleinführung verwendest:


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

Wenn die Grafikeinstellungen des Benutzers auf automatisch eingestellt sind, dann wird die Enum.SavedQualitySetting zu Automatic .Es gibt derzeit keine Möglichkeit für Entwickler, die aktuelle Grafikqualitätsstufe der Maschine eines Benutzers zuverlässig zu erhalten.

Parameter

betterQuality: boolean

Ob der Benutzer eine Erhöhung ( wahr ) oder eine Reduzierung ( falsch ) der Grafikqualität angestoßen hat.


Code-Beispiele

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

Dieses Ereignis wird auf dem Client ausgelöst, wenn alle ursprünglichen Instances im Spiel zum Client repliziert sind.

Es sei denn, sie werden zu ReplicatedFirst überlassen, LocalScripts laufen nicht, bis das Spiel geladen ist.Das folgende Snippet, ausgeführt von einem LocalScript in ReplicatedFirst gibt bis das Spiel geladen ist:


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

Siehe auch:

  • Replikations顺序 für eine detailliertere Zusammenfassung des Ladeprozesses.
  • DataModel.Loaded , ein ereignis, das abgefeuert wird, wenn das spiel geladen wurde
  • Instance:WaitForChild() , eine funktion, die verwendet werden kann, um auf ein einzelnes Instance zu warten, ohne warten zu müssen, bis das gesamte spiel geladen ist.