DataModel

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz

Veri Modeli (genellikle ona erişmek için kullanılan küresel değişkenin ardından bilinen game), Roblox'un ebeveyn-çocuk hierarşisinin kökü.Doğrudan çocukları hizmetlerdir, örneğin Workspace ve Lighting, bir Roblox oyununun temel bileşenleri olarak davranan.

Kod Örnekleri

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

Özet

Özellikler

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    dünyasahiplenen kullanıcının veya grubun kimliğini tanımlar.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    dünyatanımlar Enum.CreatorType, yerin bir kullanıcı veya bir grup tarafından sahip olup olmadığını.

  • Salt Okunur
    Çoğaltılmamış
    Roblox Betik Güvenliği
    Paralel oku
  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Sunucuda çalışan yerin ait olduğu deneyimin kimliğini tanımlar. Describes the ID of the experience that the place running on the server belongs to.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku
    Artık Kullanılmayan

    İşlevsel değil. Tarihsel olarak, yerin Enum.Genre Roblox web sitesinde ayarlanmış olarak tanımlandı.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Çalışan oyun sunucu istemcisi için benzersiz bir tanımlayıcı.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Sunucudaki oyuncuların nasıl eşleştirmetemsil eder.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Sunucuda çalışan yerin kimliğini tanımlar.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Sunucunun çalıştığı yerin sürümünü tanımlar.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Sunucunun özel sunucu kimliğini tanımlar, sunucu özel bir sunucu veya reserved server ise.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Sunucu özel ise sunucunun sahibi olan özel sunucunun açıklanmasını sağlar, eğer sunucu özel ise.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Workspace hizmetine bir referans.

Yöntemler

  • BindToClose(function : function):()

    Sunucu kapatılmadan önce çağrılacak bir işlev bağlar.

  • Eklenti Güvenliği

    Görev planlayıcı tarafından yapılan işlerle ilgili temel bilgileri içeren bir tablo döndürür.

  • GetObjects(url : ContentId):Instances
    Eklenti Güvenliği
    Artık Kullanılmayan

    Verilen içerik URL'si ile ilişkili bir dizi Instances döndürür.

  • Müşteri ilk kez oyunu yüklemeyi bitirdiğinde doğru döndürür.

  • SetPlaceId(placeId : number):()
    Eklenti Güvenliği

    Mevcut oyun örneğinin DataModel.PlaceId sınırını verilen yerId ye ayarlar.

  • SetUniverseId(universeId : number):()
    Eklenti Güvenliği

    Mevcut oyun örneğinin DataModel.GameId sınırını verilen evrenId 'ye ayarlar.

Şuradan alınan Yöntemler: ServiceProvider
  • Paralel yaz

    Verilen sınıf tarafından belirtilen hizmeti geri döndürür, eğer zaten oluşturulduysa, geçersiz bir isim için hata.

  • Talep edilen sınıf adıyla hizmeti geri döndürür ve mevcut değilse yeni bir hizmet oluşturur.

Etkinlikler

Şuradan alınan Etkinlikler: ServiceProvider

Özellikler

CreatorId

Salt Okunur
Çoğaltılmamış
Paralel oku

Bu özellik, dünyasahiplenen kullanıcının veya grubun kimliğini tanımlar.Eğer DataModel.CreatorType özelliği 'Kullanıcı' ise, YaratıcıId dünyasahibinin Player.UserId olacaktır.Eğer 'Grup' ise, CreatorId dünyasahibi olan grup kimliği olacaktır.

Kod Örnekleri

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

Salt Okunur
Çoğaltılmamış
Paralel oku

Bu özellik, dünyasahibinin bir kullanıcı veya bir grup olup olmadığını tanımlar Enum.CreatorType . yerin.

Eğer Enum.CreatorType'Kullanıcı' ise, DataModel.CreatorId özelliği oyunun sahibi olan hesabın UserId özelliğini tanımlayacaktır.CreatorType 'Grup' ise, grup kimliğini tanımlayacaktır.

Kod Örnekleri

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

Salt Okunur
Çoğaltılmamış
Roblox Betik Güvenliği
Paralel oku

GameId

Salt Okunur
Çoğaltılmamış
Paralel oku

Bu özellik, sunucuda çalışan yerin ait olduğu deneyimin kimliğini tanımlar.

Ayrıca bakın

Salt Okunur
Çoğaltılmamış
Paralel oku

Bu özellik bozuk ve kullanılmamalıdır.

Bu özellik tarihsel olarak yerin Enum.Genre Roblox web sitesine ayarlanmış olarak tanımlandı.

Bu özellik, DataModel.GearGenreSetting ile birlikte, artık Enum.Genre sayılan Roblox web sitesinde var olan türler nedeniyle doğru çalışmıyor.Sonuç sonuç, bu özelliği okumaya çalışmak bir hata verebilir.

JobId

Salt Okunur
Çoğaltılmamış
Paralel oku

Bu özellik, çalışan oyun sunucu istemcisi için benzersiz bir tanımlayıcıdır.Evrensel olarak benzersiz bir tanımlayıcıdır (UUID), yani hiçbir iki sunucu, geçmişte veya şimdi, aynı kimliğe sahip olmayacaktır.

Studio'da boş bir dizeye varsayılır.

Ayrıca bakın

MatchmakingType

Salt Okunur
Çoğaltılmamış
Paralel oku

Bu özellik, sunucudaki oyuncuların nasıl eşleştirmetemsil eder.Farklı MatchmakingTypes olan oyuncular aynı sunucuya giremez veya ışınlanamaz.

Bu özelliğin yalnızca sunucuda DataModel geçerli olduğunu ve tüm istemciler için Enum.MatchmakingType.Default değeri olacağını unutmayın, bu nedenle yalnızca sunucu tarafındaki Script içinde bu özelliğe referans verin.

PlaceId

Salt Okunur
Çoğaltılmamış
Paralel oku

Bu özellik, sunucuda çalışan yerin kimliğini tanımlar.

Eğer yer Roblox'a yayınlanmadıysa, bu kimlik kullanılan şablona eşit olacaktır.

Ayrıca bakın

PlaceVersion

Salt Okunur
Çoğaltılmamış
Paralel oku

Bu özellik, sunucunun çalıştığı yerin sürümünü tanımlar.

Bu sürüm numarası, dünyaayarlarının Sürüm Geçmişi bölümünde gösterilen sürüm numarasıyla eşleşir.Roblox istemcisinin mevcut sürümü değil.Bu özellik tüm yayınlanmamış deneyimler için 0'dur.

Bir dünyaiçin bir sunucu örneği oluşturulduğunda, mekanın mevcut sürümünü kullanır.Bu sunucu çalışırken daha sonra yer güncellenirse, sunucu mevcut sürümünde kalacaktır.

Bu özellik, hata ayıklamaya yardımcı olmak için mevcut oyunun ScreenGui sürümünü gösteren bir Players görüntülemek için kullanılabilir.

Kod Örnekleri

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

Salt Okunur
Çoğaltılmamış
Paralel oku

Bu özellik, sunucunun özel sunucu ID'sini tanımlar, eğer sunucu özel bir sunucuysa.

Sunucu özel bir sunucu değilse, bu özellik boş bir diziolacaktır.

Özel sunucular

Özel sunucular takip edilenşeylere atıfta bulunur:

Özel Sunucu Kimliği vs İş Kimliği

Bir sunucunun ÖzelSunucuId'si DataModel.JobId 'dan farklıdır. JobId , mevcut sunucu durumbenzersiz tanımlayıcısıdır.

Özel sunucular (özel veya rezerve sunucular) zamanla onlara bağlı çok sayıda sunucu örneğine sahip olabilir.Bunun nedeni, yalnızca bir sunucu örneğinin aynı anda özel bir sunucu için çalışabilmesine rağmen, yeni sunucu örneklerinin oyuncuların oyuna katılması ve oyundan ayrılmasıyla açılıp kapanabilmesidir.Örneğin, sunucuda kimse oynarken hiçbir sunucu örneği çalışmıyor.Özel Sunucu Kimliği tüm bu sunucu örnekleri arasında tutarlı olacak ve DataModel.JobId her biri için benzersiz olacak.

Ayrıca bakın:

Kod Örnekleri

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

Salt Okunur
Çoğaltılmamış
Paralel oku

Bu özellik, sunucu özel ise özel sunucu sahibi olan özel sunucunun sahibini tanımlar, eğer sunucu özel ise.

Sunucu standart veya rezerve bir sunucuysa, bu özellik 0 olarak ayarlanacaktır.

Örneğin, bir Player özel sunucunun sahibi olup olmadığını tanımlamak için bu özellik kullanılabilir:


local Players = game:GetService("Players")
-- bu özel bir sunucu mu?
if game.PrivateServerId ~= "" and game.PrivateServerOwnerId ~= 0 then
-- eklenen yeni oyuncuları dinle
Players.PlayerAdded:Connect(function(player)
-- oyuncunun sunucu sahibi olup olmadığını kontrol et
if player.UserId == game.PrivateServerOwnerId then
print("The private server owner has joined the game")
end
end)
end

Ayrıca bakın:

Kod Örnekleri

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

Salt Okunur
Çoğaltılmamış
Paralel oku

Bu özellik, Workspace hizmetine bir referanstır. Her zaman Workspace işaret eder ve asla nil olmayacaktır.

Yöntemler

BindToClose

()

Sunucu kapatılmadan önce çağrılacak bir işlev bağlar.Bağlı işlev bir parametre kabul ederse, sunucunun kapatılmasının nedenini belirten Enum.CloseReason geçer.

Birden fazla işlevi BindToClose() tekrar tekrar çağırarak bağlayabilirsiniz. Bağlı işlevler paralel olarak çağrılır ve aynı anda çalışır.

Deneyim sunucusu, kapanmadan önce tüm bağlı işlevlerin çalışmasını durdurmak için 30 saniye bekler.30 saniye sonra, işlevler hala çalışıyor olsa bile sunucu kapatılır.

Mevcut oturumun Roblox Studio'da olmadığını doğrulamak için RunService:IsStudio() kullanın.Bu, bağlı işlevlerin çevrimdışı test oturumlarında çalışmasını bitirmesini engeller.

DataStoreService kullandığınızda, tüm kaydedilmemiş verileri DataStores 'a kaydeden bir işlev bağlamak için BindToClose 'i de kullanmalısınız.Bu, sunucunun beklenmedik bir şekilde kapatılması durumunda veri kaybını engeller.

Ayrıca bakın:

Parametreler

function: function

Deneyim sunucusu kapatılmadan önce çağrılan bir işlev.Bağlı işlev bir parametre kabul ederse, sunucunun kapatılmasının nedenini belirten Enum.CloseReason geçer.

Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

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

Eklenti Güvenliği

Görev planlayıcı tarafından yapılan işlerle ilgili temel bilgileri içeren bir tablo döndürür.

Hesaplama sırasında, bir görev planlayıcı, uygun aralıklarda ana görevlerin yürütülmesinden sorumlu bir sistemdir.

Ayrıca Roblox Studio'daki Görev Planlayıcı penceresinde canlı görev planlayıcı istatistikleri bulabilirsiniz.

Tablodaki ilk giriş, mevcut istatistikleri (veya başlıkları) içeren bir referans sözlüğüdür. Aşağıdaki biçimdedir:


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

Tablodaki sonraki girişler, görev planlayıcı tarafından yapılan işler için yukarıdaki istatistikleri içeren sözlüklerdir. Örneğin:


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

Ayrıca bakın:


Dönüşler

Görev planlayıcı tarafından yapılan işlerle ilgili bilgileri içeren bir tablo, format için yukarıya bakın.

Kod Örnekleri

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
Eklenti Güvenliği

Bu yöntem, verilen içerik URL'si ile ilişkili bir dizi Instances döndürür.Roblox kütüphanesinden içerik eklemek için kullanılabilir.Bu yöntem kullanılarak Sounds bu yöntem kullanılarak Instance ile bağlantılı olmadıklarından ve yalnızca bir içerik URL'si olduğundan onlara eklenemez.

Farklı olarak InsertService:LoadAsset() , DataModel:GetObjects() bir varlığın "güvenilir" olmasını gerektirmez, yani bir varlığın kaydedilmiş kullanıcı tarafından sahiplenilmesi veya Roblox tarafından oluşturulması gerekmez, böylece yerleştirilebilir.Ancak, eğer varlık kaydedilmiş kullanıcı tarafından sahip değilse, özgürce kullanılabilmelidir.

Bu işlevin güvenlik konteksi nedeniyle yalnızca eklentiler veya komut çubuğu tarafından kullanılabilir.Scripts ve LocalScripts 'de kullanılabilecek bir alternatif için, bakınız InsertService:LoadAsset() .

Parametreler

url: ContentId

Verdiğiniz içerik URL'si.

Varsayılan değer: ""

Dönüşler

Instances

İçerik URL'si ile ilişkili bir Instances dizi.

Kod Örnekleri

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

Oyundaki tüm ilk Instances başlangıç ​​replikasyonu müşteriye bitince, bu işlev gerçek döndürür.

Ebeveynliğe sahip olmadıkları sürece, ReplicatedFirst , LocalScripts oyun yüklenene kadar çalışmaz.Aşağıdaki kısım, oyun yüklenene kadar bir LocalScript içinde çalışır ve ReplicatedFirst oyun yüklendene kadar verir:


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

Ayrıca bakın:


Dönüşler

Müşterinin oyunu ilk kez yüklemeyi bitirdiği.

Kod Örnekleri

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

()
Eklenti Güvenliği

Bu işlev, oyun örneğinin DataModel.PlaceId kısmını verilen yerId ye ayarlar.

Yer yayınlanmadığında, örneğin yerel bir .rbxl dosya olduğunda, DataModel.PlaceId ve DataModel.GameId her ikisine de erişmek gerekir, örneğin bir yer DataStoreService dosyası.Aşağıya bir örnek için bakın.Stüden'den API hizmetlerine erişim kazanmak için Studio'ya erişimin etkinleştirilmesi gerektiğini unutmayın Güvenlik panelinden Oyun Ayarlarında Oyun Ayarlarında Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden Güvenlik panelinden çalınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınının


local DataStoreService = game:GetService("DataStoreService")
-- PlaceId'i yerId'ye ve GameId'i evrenId'ye ayarlayarak DataStore'a 'Veri' erişin.
game:SetPlaceId(placeId)
game:SetUniverseId(universeId)
local dataStore = DataStoreService:GetDataStore("Data")

Parametreler

placeId: number

DataModel.PlaceId 'yi ayarlamak için ID.

Varsayılan değer: ""

Dönüşler

()

SetUniverseId

()
Eklenti Güvenliği

Bu işlev, mevcut oyun örneğinin DataModel.GameId 'sini verilen evrenId 'ye ayarlar.Roblox'a yayınlanmamış yerel .rbxl dosyalarını test etmek için bu yararlıdır.

Yayınlanmamış bir dünyaDataStoreService 'ye erişmek için, her ikisi de DataModel:SetUniverseId() ve DataModel:SetPlaceId() ayarlanmalıdır.

Parametreler

universeId: number

DataModel.GameId 'yi ayarlamak için ID.

Varsayılan değer: ""

Dönüşler

()

Etkinlikler

GraphicsQualityChangeRequest

Kullanıcı, kısa yolları kullanarak grafik kalitesinde bir artış veya azalma istediğinde ateş eder.

Bu olay aşağıdaki koşullar altında ateşlenir:

  • Kullanıcı F10 basarsa, bu olay betterQuality ile bir true argümanı kullanarak ateşlenir.
  • Kullanıcı ShiftF10 basarsa, bu olay betterQuality ile bir false argümanı kullanarak ateşlenir.

Bu etkinlik mevcut grafik kalite seviyesini sağlamaz veya grafik kalitesine tüm güncellemeleri kapsamaz.Örneğin, temel GUI kaçış menüsünde yapılan değişiklikler kaydedilmez.

Kullanarak bir kullanıcının Enum.SavedQualitySetting ini geri alabilirsiniz UserGameSettings şu kodla:


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

Kullanıcının grafik ayarları otomatik olarak ayarlanmışsa, olacaktır.Şu anda geliştiricilerin bir kullanıcının makinesinin mevcut grafik kalite seviyesini güvenilir bir şekilde alması için bir yol yok.

Parametreler

betterQuality: boolean

Kullanıcı grafik kalitesinde bir artış ( gerçek ) veya azalma ( yanlış ) talep ettiyse.


Kod Örnekleri

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

Bu olay, oyundaki tüm ilk Instances başlangıç ​​ replikasyonu müşteriye bitince müşteride ateşlenir.

Ebeveynliğe sahip olmadıkları sürece, ReplicatedFirst , LocalScripts oyun yüklenene kadar çalışmaz.Aşağıdaki kısım, oyun yüklenene kadar bir LocalScript içinde çalışır ve ReplicatedFirst oyun yüklendene kadar verir:


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

Ayrıca bakın: