In 再使用コード で、game:GetService() メソッドの頻繁な使用に気づいたかもしれません。Roblox サービスは、エンジンの内蔵機能にアクセスできるようにしてくれます。例えば、経験内のアイテムの販売、チャットの有効化、サウンドの再生、オブジェクトのアニメーション、インスタンスの管理などです。
実際、サービスは Roblox 開発の最も基本的で一般的なパターンの第一歩 です:
- サービスを取得。
- モジュールスクリプトが必要です。
- ローカル機能を追加。
- それらの機能をトリガーする イベント を追加します。
たとえば、プレイヤーがあなたのエクスペリエンスから退出すると、世界の位置を保存したいかもしれません:
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SaveManager = require(ReplicatedStorage:WaitForChild("SaveManager"))
-- モジュールスクリプトで再利用可能な関数を呼び出すローカル機能。
local function saveProgress(character)
-- プレイヤーのキャラクターの位置を取得する。
local position = character:FindFirstChild("HumanoidRootPart").Position
-- 保存データ関数をモジュールスクリプトで使用し、書き込みます
-- DataStoreService。
SaveManager.saveData(character, position)
end
-- キャラクターが削除されたときに saveProgress() を呼び出す別のローカル関数
-- 経験から (この場合、プレイヤーが退出するとき)。
local function onPlayerAdded(player)
player.CharacterRemoving:Connect(saveProgress)
end
-- プレイヤーが最初にエクスペリエンスに接続すると、onPlayerAdded が呼び出されます。
Players.PlayerAdded:Connect(onPlayerAdded)
いくつかの重要な詳細は次のとおりです:
- スクリプトごとにサービスを 1回だけ取得する必要があるため、変数にサービスと同じ名前を付けるのがコンベンションです。この規約は、モジュールスクリプトにも適用されます。
- グローバル変数 game でサービスを取得し、データモデルの根に対する参照を取得します。
- Roblox はロード順序に関する保証を提供しないため (そして インスタンスストリーミング は特定の時点でロードされないものをさらに複雑にする)、 Instance:WaitForChild() の使用は重要な安全対策です。
標準のライブラリを比較するのではなく、グローバル機能と変数 、またはサードパーティのライブラリを比較するのではなく、Roblox の開発の大部分は、多くの多くのサービスのうちどれが望ましい機能をエクスペリエンスに追加するのを助けることができるかを特定することです。上記の例では、ディスクに書くための標準の I/O ライブラリを使用するのではなく、クラウドサービス を使用してデータを保存します。
コンテナサービス
コンテナサービスは他のオブジェクトを含み、影響を与えることができます。これらのコンテナサービスは、データモデルのルートにあり、Studio のエクスプローラーウィンドウで表示できます。単に、これらのコンテナサービスはデータモデルの構造化された階層を形成し、Roblox エンジンは適切に場プレースを解釈しレンダリングできます。次の表には、一般的なコンテナサービスが含まれています。
サービス | 説明 :--- | :--- Workspace | 3D ワールドでレンダリングするすべてのオブジェクト (パーツや地形など) を含みます Lighting | ユニバーサル照明効果の設定用のオブジェクトを含み、例えば Atmosphere や Sky など。ReplicatedStorage と ReplicatedFirst | サーバーとクライアントの間で複製されるコンテンツとロジックを含む。
データモデルをさらに調査するには、次の方法を使用できます:
- game:FindService() 指定されたサービスのインスタンスを検索する。
- game:GetChildren() は、データモデルのすべてのルートチャイルドの配列を返し、それはトップレベルのコンテナサービスです。
- game:GetDescendants() は、すべてのコンテナサービスとその子供を含むデータモデルのすべての子孫の配列を返します。
コンテナサービスに関する詳細情報は、データモデル ドキュメントを参照してください。
スクリプトサービス
スクリプトサービスは、スクリプト内で呼び出す Roblox エンジン内の標準機能を提供します。次の表には、一般的なスクリプトサービスが含まれています。
サービス | 説明 :--- | :--- TweenService | 他のインスタンスの数値プロパティを開始から終了までの値にインターポレートするのに使用し、方向とスタイプレミアムの緩和、繰り返し、遅延のオプションがあります。 MarketplaceService | プレイヤーに開発者製品、サブスクリプション、またはゲームパ押すの購入を促すなど、経験中の取引の責任者は、Roblox Premiumなどにアップグレードします ContextActionService | ユーザーの入力、キープレス、スクリーンタップ、またはコントローラーボタンプレスをコンテキストアクションにバインドできるようにし、ユーザーが車に乗って出るときに制御を変更するなどのコンテキストアクションにバインドできます。 RunService | フレームごとのタイム管理のためのメソッドとイベント、およびエクスペリエンスが実行されているコンテキスト(サーバー、クライアント、Studio モード)をチェックするためのメソッドとイベントを含むすべてのランタイムフレームでプロセスを実行または更新するのに便利。SoundService | ドップラースケールや体積オーディオなど、エクスペリエンスでオーディオが再生される方法のグローバルなアスペクトを制御します。また、サウンドグループを含めることで、複数のオーディオシグナルのボリュームと動的効果プロパティを一度に制御できます。 CollectionService | サーバーからクライアントにリプリケートするタグを持つインスタンスのグループ (コレクション) を管理し、関連するインスタンスのグループをより簡単に割り当てて作業できます。
クラウドサービス
Roblox には、Roblox クラウドで発生するタスクとプロセスを処理する特別なクラウドサービスもあります。次の表には、一般的なクラウドサービスが含まれています。
サービス | 説明 :--- | :--- DataStoreService | セッション間で永続データを保存するため。 MemoryStoreService | 頻繁に変更され、一時的なデータを保存するため。 MessagingService | ライブセッション中に複数のサーバー間でコミュニケーションするため。
クラウドサービスにも対応する Web API があり、外部スクリプトまたはツールからアクセスできます。詳細は、クラウドを開く を参照してください。