DataModel
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
Game (親子間のランクを示すグローバル変数の使用後に使用される)は、Roblox の親子間階層の根です。その直接の子は、game や Workspace など、Roblox ゲームの基本コンポーネントです。
コードサンプル
local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")
-- Examples of modifying properties of these services
Workspace.Gravity = 20
Lighting.ClockTime = 4
概要
プロパティ
場プレースを所有するユーザーまたはグループのIDを説明します。
ユーザーまたはグループが所有するかどうかにかかわらず、プレース所の Enum.CreatorType を説明します。
サーバー上に実行されているプレースの ID を記述します。
機能しません。昔は、Roblox ウェブサイトで Enum.Genre の場所を設定したように説明しました。
実行中のゲームサーバーインスタンスのユニークな識別子。
サーバー上で実行されている場所の ID を説明します。
サーバーが実行している場所のバージョンを説明します。
サーバーがプライベートサーバーである場合、サーバーのプライベートサーバー ID が記述されています。 Describes the private server ID of the server, if the server is a private server or a reserved server .
Class.Player.UserId|userId を含む、Player がプライベートサーバーを所有している場合の Class.Player の説明
Class.Workspace サービスへの参照。
方法
サーバーがシャットダウンする前に呼び出される関数をバインドします。
タスクスケジューラーによって実行されるジョブに関する基本的な情報を含むテーブルを返します。
Class.Instance|Instances を含むコンテンツの URL に関連付けられた配列を返します。
クライアントがゲームの読み込みを最初に完了した場合、 true が返されます。
現在のゲームインスタンスの DataModel.PlaceId を指定した placeId に設定します。
現在のゲームインスタンスの DataModel.GameId を universeId に設定します。
指定されたユーザー名によってサービスが作成されている場合、不正な名前のエラーが返されます。
要求されたクラス名でサービスを返し、存在しない場合はクラス名を作成します。
イベント
ユーザーがプロンプトし、ホットキーを使用してグラフィックの品質を増加または減少するときに発動します。
ゲームが最初に読み込みを完了するときにクライアントにファイアをオンにします。
現在の場所が終了するときに発動します。
サービスが作成されたときに発動します。
サービスが削除されるときに発動します。
プロパティ
CreatorId
このプロパティは、場プレースを所有するユーザーまたはグループのIDを記述します。如果 DataModel.CreatorType プロパティが User である場合、CreatorId はプレースプレースの所有者の Player.UserId になりま
コードサンプル
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
このプロパティは、場所がユーザーまたはグループが所有するかどうかにかかわらず、場プレースの Enum.CreatorType を記述します。
Class.DataModel.CreatorId プロパティは、ゲームを所有するアカウントの Class.Player.UserId|userId を記述します。DataModel.CreatorId が 1>Group1> である場合、4>Class.Player.UserId4> はグループ ID を記述します。
コードサンプル
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)
GameId
このプロパティは、サーバー上で実行されている場所の ID を記述します。
このID は、アセットマネージャー の Roblox Studio の右上隅にあります。Roblox Studio を使用するときは、場所が Roblox に公開されていない場合、ゲームID は使用されているテンプレートに対応します。
参照してください:
- DataModel.PlaceId 、サーバー上で実行されている場所の ID を説明します
- DataModel.JobId 、サーバーゲームインスタンスの実行中のユニークな識別子
- TeleportService 、Players をゲーム間で移動するサービス
Genre
このプロパティは壊れており、使用しないでください。
このプロパティは、Roblox ウェブサイトで設定された Enum.Genre の場所を昔のまま説明します。
このプロパティ、DataModel.GearGenreSetting を含む、Roblox ウェブサイトに存在するジャンルが Enum.Genre ジェンジンに正しく反映されなくなったため、このプロパティは正しく機能しません。結果、このプロパティを読み取おうとするとエラーが発生する可能性があります。
JobId
このプロパティは、実行中のゲームサーバーインスタンスのユニークな識別子です。これは、ユニークなユニーク識別子 (UUID) で、2つのサーバー、過去または現在、は決して同じ IDを持つことはありません。
Studio の空の文字列にデフォルトを設定します。
参照してください
- TeleportService:GetPlayerPlaceInstanceAsync() を使用して、ユーザーの現在のサーバーの DataModel.JobId を取得できます。
- TeleportService:TeleportToPlaceInstance() は、Player を特定のサーバーにテレポートするために使用できます。
- DataModel.PrivateServerId は、ゲームサーバーインスタンスの所属するプライベートサーバーの ID を記述します。
- HttpService:GenerateGUID()、自分の UUID を生成できる関数。
PlaceId
このプロパティは、サーバー上で実行されている場所の ID を記述します。
場所が Roblox に公開されている場合、この ID は Studio の アセットマネージャー を右クリックして 場所 フォルダ内の場所を選択して クリップボードに ID をコピー を選択することで入手できます。
場所が Roblox に公開されていない場合、この ID は使用されているテンプレートに対応します。
参照してください
- DataModel.GameId 、現在の場所が所属するエクスペリエンスの ID を説明します
- DataModel.JobId 、サーバーゲームインスタンスの実行中のユニークな識別子
- TeleportService 、Players を場所間で移動できるサービス
PlaceVersion
このプロパティは、サーバーが実行している場所のバージョンを説明します。
このバージョン番号は、場プレースの設定の バージョン履歴 セクションの下に表示されているバージョン番号と一致します。これは、Roblox クライアントの現在のバージョンではありません。このプロパティは、公開されていないエクスペリエンスのすべてのバージョンに 0 です。
場プレースにサーバーインスタンスが作成されると、場プレースの現在のバージョンを使用します。場所がこのサーバーで実行されている間、場所は現在のバージョンで残ります。
このプロパティは、ScreenGui を表示して、ゲームの現在のバージョンをPlayersに表示して、デバッグを助けるために使用できます。
コードサンプル
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
このプロパティは、サーバーがプライベートサーバーである場合のサーバーのプライベートサーバー ID を記述します。
サーバーがプライベートサーバーでない場合は、このプロパティは空の文字列になります。
プライベートサーバー
プライベートサーバーはフォロー中の内容に参照しています:
- プライベートサーバー は、ゲームページから購入できるユーザー専用のサーバーです
- 予約サーバー、開発者が TeleportService:ReserveServer() を使用して作成したプライベートサーバー
PrivateServerId 対JobId
サーバーのプライベートサーバーIDは、DataModel.JobId と異なります。JobId は、現在のサーバーインスタンスのユニークな識別子です。
プライベートサーバー (プライベートまたは予約サーバー) は、時間をかけて複数のサーバーインスタンスを持つことができます。これは、プライベートサーバーのインスタンスが 1つだけ実行されている場合でも、新しいサーバーインスタンスが参加してゲームを
参照してください:
- DataModel.PrivateServerOwnerId 、プライベートサーバーの所有者を説明するプロパティ
- TeleportService:ReserveServer()、予約サーバーを作成する関数
コードサンプル
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
このプロパティは、UserId を持つ Player のプライベートサーバーを所有している場合、Class.Player.UserId|userId を持つ 2>Class.Player2> のプライベートサーバーを所有している場合を除きます。
サーバーが標準サーバーまたは予約サーバーの場合、このプロパティは 0 に設定されます。
このプロパティは、Player がプライベートサーバーの所有者であるかどうかを示すのに使用できます。たとえば:
local Players = game:GetService("Players")
-- これはプライベートサーバーですか?
if game.PrivateServerId ~= "" and game.PrivateServerOwnerId ~= 0 then
-- 新しいプレイヤーが追加されるのを聞く
Players.PlayerAdded:Connect(function(player)
-- プレイヤーがサーバーの所有者であるかどうかをチェックします
if player.UserId == game.PrivateServerOwnerId then
print("The private server owner has joined the game")
end
end)
end
参照してください:
コードサンプル
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
ワークスペースプロパティは、Workspaceサービスに参照されます。
このプロパティは常に Workspace にポイントし、Class.Workspace のゼロで終わりません。
Class.Workspace には、グローバル変数 workspace と ServiceProvider:GetService() 機能を使用してアクセスできます。たとえば:
workspace -- グローバル変数game.Workspace -- DataModel (ゲーム) のプロパティgame:GetService("Workspace") -- workspace is a service
方法
BindToClose
サーバーがシャットダウンする前に呼び出される関数をバインドします。バインドされた関数はパラメーターを受け入れると、サーバーのシャットダウンの理由を指定する Enum.CloseReason を通過します。
Class.DataModel:BindToClose()|BindToClose() を繰り返し呼び出すと、関数を複数バインドできます。バインドされた関数は並行して呼び出され、実行されます。
エクスペリエンスサーバーは、すべてのバインド機能がシャットダウンするまで 30 秒待ちます。30 秒後、サーバーは機能が実行されている場合でもシャットダウンします。
現在のセッションが Roblox Studio ではないことを確認するには、RunService:IsStudio() を使用します。これにより、オフラインテストセッションでバインドされた関数を完了することができません。
Class.DataStoreService を使用すると、BindToClose も使用して、すべての未保存データを DataStores にバインドする必要があります。これにより、サーバーが予期せぬ方法でシャットダウンすると、データの損失を防止できます。
参照してください:
- Enum.CloseReason の理由でエクスペリエンスサーバーのシャットダウン。
- PluginGui:BindToClose() は、PluginGui ボタンを閉じる機能にバインドします。
パラメータ
エクスペリエンスサーバーがシャットダウンする前に、関数を呼び出します。バインドされた関数がパラメーターを受信すると、Enum.CloseReason がサーバーのシャットダウンの理由を指定します。
戻り値
コードサンプル
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)
game:BindToClose(function(closeReason)
print(`Closing with reason {closeReason}`)
task.wait(3)
print("Done")
end)
GetJobsInfo
タスクスケジューラーによって実行されるジョブに関する基本的な情報を含むテーブルを返します。
コンピュートでは、タスクスケジューラーは適切な間隔でキータスクを実行するシステムです。
Roblox Studio のタスクスケジューラウィンドウでも、ライブタスクスケジューラの統計を見つけることができます。
テーブルに返される最初のエントリは、統計 (またはヘッドィング) が含まれる参照ディクティオンです。次の形式で表示されています:
{["name"] = "name",["averageDutyCycle"] = "averageDutyCycle",["averageStepsPerSecond"] = "averageStepsPerSecond",["averageStepTime"] = "averageStepTime",["averageError"] = "averageError",["isRunning"] = "isRunning",}
以下の表に返される次のエントリは、タスクスケジューラーによって実行されるジョブの統計を含む辞書です。たとえば:
{["name"] = "Heartbeat",["averageDutyCycle"] = 0,["averageStepsPerSecond"] = 0,["averageStepTime"] = 0,["averageError"] = 0,["isRunning"] = false,}
参照してください:
戻り値
タスクスケジューラーが実行するジョブに関する情報を含むテーブル、上記の形式については参照してください。
コードサンプル
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 与えられたコンテンツの URL に関連付けられたアレイを返します。これは、Roblox ライブラリからコンテンツを挿入するために使用できます。このメソッドを使用して、Sounds を挿入することはできません
Class.InsertService:LoadAsset() とは、DataModel:GetObjects() のようなアセットを「信頼」する必要はありません。つまり、アセットを所有する必要はありません。ただし、アセットがRoblox(ロブロックス)グインユーザーの所有でない場合は、アセットを自由に入れる必要があります。
この機能のセキュリティコンテキストにより、この機能はプラグインまたはコマンドバーのみが使用できます。For an alternative that can be used in Scripts と LocalScripts の場合、see InsertService:LoadAsset() .
パラメータ
指定されたコンテンツ URL。
戻り値
コンテンツ URL と関連付けられた Instances 配列。
コードサンプル
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)
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
この関数は、クライアントがゲームの読み込みを最初に完了した場合に true を返します。
ゲーム中のすべての初期の Instances がクライアントにレプリケート完了したとき、この関数は true を返します。
Class.ReplicatedFirst が親にならないと、 LocalScripts はゲームが読み込まれるまで実行されません。次のスナップショットは、 LocalScript から 1>Class.LocalScripts1> まで、ゲームが読み込まれるまで実行されます。次のスナップショットは、
if not game:IsLoaded() thengame.Loaded:Wait()end
参照してください:
- DataModel.Loaded 、ゲームが読み込まれたときに発生するイベント
- Instance:WaitForChild() 、個々の Instance を再プレイするために使用できる関数
戻り値
クライアントがゲームの読み込みを最初に完了したかどうか。
コードサンプル
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
この関数は、ゲームインスタンスの DataModel.PlaceId を指定した placeId に設定します。
Class.DataStoreService にアクセスするには、DataModel.GameId と DataStoreService の両方が必要です。1>Class.DataStoreService
local DataStoreService = game:GetService("DataStoreService")-- PlaceId を設定して、GameId を宇宙ID に設定して、データストア「データ」にアクセスします。game:SetPlaceId(placeId)game:SetUniverseId(universeId)local dataStore = DataStoreService:GetDataStore("Data")
パラメータ
Class.DataModel.PlaceId を設定するID。
戻り値
SetUniverseId
この関数は、現在のゲームインスタンスの DataModel.GameId を、 universeId に設定します。これは、Roblox に公開されていないローカル .rbxl ファイルをテストするときに便利です。
公開されていない場プレースで DataStoreService にアクセスするには、DataModel:SetUniverseId() と DataModel:SetPlaceId() の両方が設定されている必要があります。
パラメータ
Class.DataModel.GameId を設定する ID。
戻り値
イベント
GraphicsQualityChangeRequest
ユーザーがホットキーを使用してグラフィックの品質を増加または減少すると、ファイアが発動します。
このイベントは、次のコンディションで発動します:
- ユーザーが F10 を押すと、このイベントは betterQuality の引数で true が発動します。
- ユーザーが Shift を押すと、このイベントは F10 で発動し、 betterQuality 引数の 0> force0> で終了します。
このイベントは、現在のグラフィックスクオリティレベルを提供したり、グラフィックスクオリティに関するすべての更新をカバーしたりしません。たとえば、コア GUI エスケープメニューに行われた変更は登録されません。
ユーザーの Enum.SavedQualitySetting を使用して、次のスナップショットで取り戻すことができます:
UserSettings():GetService("UserGameSettings").SavedQualityLevel
ユーザーのグラフィック設定が「自動」に設定されている場合、Enum.SavedQualitySetting は Automatic になります。現在、開発者はユーザーのマシンのグラフィック品質レベルを信頼できるように取得することはできません。
パラメータ
ユーザーがグラフィックの品質で増加 ( を求める ) または減少 ( を求める ) を求めているかどうか。
コードサンプル
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
このイベントは、ゲームが最初に読み込みを完了するときにクライアントに発生します。
読み込みイベントは、ゲーム内のすべての初期 Instances がクライアントにレプリケート完了したときに発動します。
Class.ReplicatedFirst が親にならない限り、LocalScripts はこのイベント発動時に実行されません。次のスナップショットは、LocalScript から 1>Class.LocalScripts1> まで、ゲームが読み込まれるまで実行されます。
if not game:IsLoaded() thengame.Loaded:Wait()end
参照してください:
- DataModel:IsLoaded() 、ゲームが読み込まれたかどうかを返す関数
- Instance:WaitForChild() 、個々の Instance を再プレイするた読み込むに使用できる関数。