イベントシーケンサー は、構造化されたアクションとトリガーの順序の上でライブでクロスサーバーのイベントとカットシーンを構築できる強力なフレームワークです。より具体的には、このモジュールはあなたを助けます:
- オーディオ、アニメーション、およびティーンのスケジュール構成を通じて構造化されたフレームワーク上にイベントまたはカットシーンをビルドします。
- 複数のサーバー間の複数のシーンの移行、複雑なアニメーションとビジュアルをタイムラインに同期する
- イベントを通じて検索し、テストと開発の目的で体験をプレビューします。
このフレームワークは、Twenty One Pilots や 24kGoldn のコンサートのような Roblox イベントや、多くの訪問者が多い経験でバトルテストされてきました。
編集可能な場プレース内で イベントシーケンサー をアクションで見るには、Roblox Studio の コンサート テンプレートをチェックしてください。このテンプレートは、開発者がイベント/コンサートを作成し、関連するさまざまな機能とコンポーネントを熟知するための包括的なスタート地点です。

モジュールの使用
インストール
エクスペリエンスで イベントシーケンサー フレームワークを使用するには:
モデル の順序が選択されていることを確認し、 すべて表示 ボタンをクリックして、 カテゴリ を選択します。
ロケートしてクリックして 開発モジュール タイル。
イベントシーケンサー モジュールを見つけてクリックするか、3Dビューにドラッグアンドドロップします。
エクスプローラー ウィンドウで、 イベントシーケンサー モデル全体を ServerScriptService に移動します。エクスペリエンスを実行すると、モジュールは複数のサービスに分配され、実行を開始します。
フレームワークモード
モードを置換
デフォルトのフレームモードは、置換モードで、3Dオブジェクト、地形、照明プロパティ、環境効果、およびユーザーインターフェイスオブジェクトをその場の環境フォルダに配置して、ユニークなシーンを設計します。シーンがロードされると、それらのオブジェクトとプロパティが 、 、および に分配され、既存のオブジェクト/プロパティを置き換えてクローンスペースを形成します。
インラインモード
代替のフレームワークモードは、 インラインモード で、スクリプトロジックでフロー/イベントのユニークなシーン を設計しますが、フレームワークは、 既存の 3Dオブジェクト 、地形、照明プロパティ、環境効果、およびユーザーインターフェイスオブジェクトをクローンするために、ロード時に環境フォルダから場の 3D環境 フォルダにアクセスします。
インラインモードを有効にするには:
サーバースクリプトサービス に配置した イベントシーケンサー モデルの内部で、ドリルダウンして インライン 値を ReplicatedStorage フォルダ内に選択します。
プロパティ ウィンドウで、 値 チェックボックスを切り替えます。
シーンを作成
A シーン は本質的に全体イベントの一部、またはシリーズのフォルダで包まれたカットシーンの一部です。各シーンには、フロー/イベントを定義するスクリプトロジックが含まれ、シーンは独自の 3Dオブジェクト、地形、照明プロパティ、環境効果、およびユーザーインターフェイスオブジェクトを保存できます。
素早く開始するには、モジュールのメインフォルダ内の空のシーンを見つけることができます:
イベントシーケンサー フォルダを拡張し、 ブランクシーン フォルダを見つけます。
すべての ブランクシーン フォルダを ReplicatedStorage に移動またはコピーします。
時間長
各シーンには 時間長 、秒単位で、期間を定義する必要があります。映画やコンサートのように、期間が設定されています。時間長は、スタジオで直接設定できる場景のフォルダ TimeLength に数字属性として定義され、プログラマティックに TimeLength を通じて設定できます。


環境
シーンの 環境 フォルダには、ユーザーが見たり聞いたりするものがすべて含まれており、3D オブジェクト、地形、照明プロパティ、および環境効果、およびユーザーインターフェイスオブジェクトが含まれています。シーンがロードされると、それらのオブジェクトとプロパティは Workspace 、 Terrain 、および Lighting に分配され、既存のオブジェクト/プロパティを置き換えてクローンスペースを形成します。
環境 フォルダ には次のコンテナが含まれています:
コンテナ | 説明 |
---|---|
クライバー | ユーザーインターフェイスオブジェクトやアニメーションリグなど、ユーザー(クライアント)がイベントに参加するとロードするすべてのアセットを含みます。 |
プレイヤースポーン | ユーザーが参加するときにスポーンするパーツが含まれています。このフォルダ内のどのパーツも、SpawnLocation と同じように動作します。 |
サーバー | サーバー上で最初にシーンが作成されるときにロードするすべてのアセットを含みます。ほとんどのビジュアルアセットはここに行くことをお勧めします。 |
地形 | シーンの地形を含みます。 |
照明 | グローバルな 照明プロパティ を属性として含み、大気効果 や 後処理効果 のような修正器も含まれています。 |
イベント
シーンの イベント フォルダは、 がクライアントモジュールとサーバーモジュール間で通信するためのプレースホルダーです。このフォルダに何かを配置する必要はありません。
クライバー
このスクリプトは、クライアント上で スキーム ロジックを実行します。
サーバー
このスクリプトは、サーバー上で スキーマロジック を実行します。
シーンスキーマ
シーンの スキーム は、シーンのタイムラインのどこで何が起こるかを定義します。シーンのスキームを クライアント と サーバー モジュールの両方で定義し、 ライフサイクルホック を含めて、 構成 が発生するときを管理する必要があります。
ライフサイクルホック
スキーム ライフサイクルホック は、シーン操作が発生するときを管理できます。生産中のシーンは通常、最も単純なフローで実行されます:
OnRun は、検索中に中断される可能性があります:
3つのホックはすべて、シーンがリプレイされた場合も繰り返すことができます:
構成
スキーマ 設定 は、例えば、00:32 にオーディオを再生し、そのオーディオとシンクする アニメーション をキューに置き、花火ショーのようなシーンイベントをスケジュールするなど、シーンのコア操作を定義します。すべての設定は、最初のパラメータ ( self ) が構成インスタンスの場合、特定の呼び出し機能をサポートします。
シーンを検索
イベントシーケンサー のユニークな機能は、ビデオを通じて検索できるように、シーンを "探す" 機能です。In 交換モード では、プロダクションに配置する前に、すべてのマルチステージイベントをプレビューするために、シーン間を切り替えることもできます。
シーン検索は誰もがアクセスできない 既に、イベントを楽しんでいるユーザーは、その時間流れを制御する能力を持っているべきではありません。代わりに、イベントの PlaceId および特定の UserIds および/または グループ およびその内の役割に基づいて許可を付与する必要があります。
Create a new Script 内で ServerScriptService を新規作成します。
新しいスクリプトに次のコードを貼り付けます。
スクリプト - 検索許可を設定local ReplicatedStorage = game:GetService("ReplicatedStorage")local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))EventSequencer.setSeekingPermissions({placeIDs = {},userIDs = {},groups = {{GroupID = , MinimumRankID = },}})次の表を setSeekingPermissions 呼び出しで満たしてください:
シーンマネージャープラグイン
シーンマネージャー プラグインは、シーンのロードと荷下ろし、照明、および地形の読み込みに便利なツールです。インラインモード を使用していない限り、手動でシーンオブジェクトとプロパティを配置/編集するのではなく、このプラグインを使用することを強く推奨します。
プラグインを設置するには:
スタジオの ビュー メニューから、 ツールボックス を開きます。
クリエイターストア タブを選択し、ドロップダウンメニューから プラグイン を選択します。
検索フィールドで シーンマネージャー を入力し、Enter を押してプラグインを見つけます。
プラグインのアイコンをクリックして詳細を表示し、次に インストール ボタンをクリックします。
プラグインがインストールされると、Studio の プラグイン タブに表示されます。
シーンの読み込みと解除
シーンの作成 で説明したように、シーンの 環境 フォルダには、ユーザーが見たり聞いたりするすべてが含まれており、3D オブジェクト も含まれています。プラグインは、ワークスペース内の組織化されたフォルダにシーンのアセットを迅速にロードしたり、出したりするのを助けます。
プラグインアクショ操作 | 説明 |
---|---|
客户をロードする | シーンのクライアントコンテンツがロードされない場合、 環境 / クライアント フォルダを ワークスペース / ScenesClient フォルダに移動します。 |
サーバーをロード | シーンのサーバーコンテンツがロードされない場合、 環境 / サーバー フォルダを ワークスペース / シーンサーバー フォルダに移動します。 |
クライアントをアンロード | シーンのクライアントコンテンツがロードされると、 クライアント フォルダが ワークスペース / ScenesClient から [シーン] / 環境 フォルダに移動します。 |
サーバーをアンロード | シーンのサーバーコンテンツがロードされると、 サーバー フォルダが ワークスペース / シーンサーバー から [シーン] / 環境 フォルダに移動します。 |
すべてのシーンをロード解除 | ロードされたすべてのシーンの クライアント と サーバー フォルダを、その 環境 フォルダに戻します。 |
照明を保存してロードする
トップレベルの Lighting サービスは、場プレースの照明プロパティとビジュアル効果をすべて保存します。トップレベルサービスなので、特定のシーンの 環境 / サーバー または 環境 / クライアント フォルダに手動で移動することはできません。代わりに、プラグインを使用して、プロパティと子をシーンの 環境 / 照明 フォルダにコピーできます。
トップレベルの サービスを介して、シーンの 照明プロパティ 、 ポストプロセッシング効果 、 大気効果 、 スカイボックス を構成し、トップレベルの サービスを介して、シーンの 照明プロパティ 、 ポストプロセッシング効果 、 大気効果 、 スカイボックス を構成します。
シーンマネージャー プラグインウィンドウで、必要なシーンのために 照明を保存 をクリックします。
地形を保存してロードする
Since Terrain は Workspace 内のトップレベルクラスであるため、生成または彫刻された地形を特定のシーンの 環境 / サーバー または 環境 / クライアント フォルダに手動で移動することはできません。代わりに、プラグインを使用して、場面の 環境 / 地形 フォルダにコピーできます。
トップレベルの 地形 サービスを通じて、シーンの地形を構成します。
シーンマネージャー プラグインウィンドウで、必要なシーンのために 地形を保存 をクリックします。
そのシーンの 環境 / 地形 フォルダを選択して拡張し、保存された地形を表す 地形領域 オブジェクトが表示されます。
地形がシーンに保存されたら、プラグインウィンドウから Terrain をクリックして、トップレベルの サービスに素早くロードできます 。
API リファレンス
スキームライフサイクルホック
オン設定時
オンセットアップ ライフサイクルホックは、 オンラン または オンエンドシーン で参照されるアセットや変数の初期化、場面の期間を持続する などを設定する目的です。このハックは、設定時に現在の時間を読み込むことができる timePositionObject パラメータを受け取ります。
クライアントスキーマ
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local clientEnvironment
local serverEnvironment
local dummy
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Client)")
-- シーン環境にアクセス;インラインモードには適用しない
clientEnvironment = EventSequencer.getCurrentSceneEnvironment()
serverEnvironment = EventSequencer.getCurrentServerEnvironmentFromClient()
-- アセットを待つ
dummy = clientEnvironment:WaitForChild("Dummy")
print("Current time is:", timePositionObject.Value)
end
サーバースキーマ
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local serverEnvironment
local partColorConnection
local changePartColorEvent = script.Parent.Events.ChangePartColor
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Server)")
-- シーン環境にアクセス;インラインモードには適用しない
serverEnvironment = EventSequencer.getCurrentSceneEnvironment()
partColorConnection = changePartColorEvent.OnServerEvent:Connect(function(player, changedPart, newColor)
serverEnvironment.changedPart.Color = newColor
end)
print("Current time is:", timePositionObject.Value)
end
オンラン時
オンラン は、スキーム 内のメインの運用ライフサイクルホックです。場面のすべてのタイムドの 設定 を含める必要があります。例えば、オーディオ または アニメーション を再生してから、イベントのスケジュールを組む のような花火ショーのように。
クライアントスキーマ
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
OnStart = function(self)
print("Audio playing")
end,
OnEnd = function(self)
print("Audio ended")
end
})
end
オンエンド場面
オンエンドシーン ライフサイクルホックは、場面で残ったものをクリーンアップするのに便利で、例えば、オンセットアップ または オンラン で作成された接続を切断するなど、場面の期間中に残っているものを削除します。
サーバースキーマ
Schema.OnEndScene = function()
print("OnEndScene (Server)")
if partColorConnection then
partColorConnection:Disconnect()
partColorConnection = nil
end
end
スキーマ構成
オーディオ
特定の時刻に再生するワークスペース内の Sound オブジェクトを作成します。サウンドは、シーンが終わった後、または Sound オブジェクトが再生を終えた後に削除されます。
構成キー | 説明 |
---|---|
StartTime | オーディオを場面の期間に関連して再生する時間、秒単位。 |
SoundId | 再プレイするオーディオのアセットID。 |
OnStart | オーディオが再生開始すると発動するカスタム関数。 |
OnEnd | オーディオが再生を終えたときに発動するカスタム関数。 |
Volume | Sound オブジェクトのボリューム; デフォルトは 0.5。 |
クライアントスキーマ
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
OnStart = function(self)
print("Audio playing")
end,
OnEnd = function(self)
print("Audio ended")
end
})
end
アニメート
特定の時間に再生する Animation を作成します。
構成キー | 説明 |
---|---|
StartTime | シーンの期間に関連してアニメーションを再生する時間、秒。 |
EndTime | アニメーションを場面の期間に関連して終了するオプション時間、秒単位。 |
Rig | アニメーションを再生するアニメーションリグ。 |
AnimationId | 再生するアニメーションのアセット ID。 |
Speed | アニメーションの再生速度; デフォルトは 1です。 |
FadeInTime | アニメーションで消える時間、秒単位; デフォルトは 0.2(秒)です。 |
FadeOutTime | アニメーションを消去する時間の量、秒; デフォルトは 0.2 (秒) です。 |
OnStart | アニメーションが再生開始するときに発動するカスタム関数。 |
OnEnd | アニメーションが再生を終了すると発動するカスタム関数。 |
Looped | アニメーションをループするかどうか; デフォルトは false です。 |
SyncToAudio | アニメーションを オーディオ 構成に同期するかどうかを定義するテーブル。次のキーを受け入れます:
|
クライアントスキーマ
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
})
local DanceAnimation = Schema:animate({
AnimationId = "rbxassetid://3695333486",
Rig = Dummy,
Speed = 1,
FadeInTime = 0.1,
FadeOutTime = 0.3,
SyncToAudio = {
Audio = MainAudio,
StartAtAudioTime = 5,
},
OnStart = function(self)
print("Animation playing")
end,
OnEnd = function(self)
print("Animation stopped")
end
})
end
ティーン
検索とダイナミックジョインで保存される設定可能な Tween を作成し、時間の異なるポイントでティーンを連鎖させ、すべてが期待通りに再生してシンクロすることができます。
構成キー | 説明 |
---|---|
StartTimes | シーンの期間に対する開始時間の表、秒単位。 |
Tween | オブジェクトとプロパティを中断する定義テーブル。次のキーを受け入れます:
|
OnStart | tween が再生を開始するときに発動するカスタム関数。 |
OnHeartbeat | すべての Heartbeat に発射するカスタム関数; 2番目のパラメータとして減少アルファを受け取る |
OnEnd | ターンフィンが再生を終えたときに発動するカスタム関数。 |
SyncToAudio | ティーンをオーディオ配置に同期するかどうかを定義するテーブル。次のキーを受け入れます:
|
クライアントスキーマ
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
})
local LightFadeOut = Schema:tween({
StartTimes = {29.884},
Tween = {
Object = game:GetService("Lighting"),
Info = TweenInfo.new(2, Enum.EasingStyle.Sine, Enum.EasingDirection.Out),
Properties = {
Brightness = 0,
}
},
SyncToAudio = {
Audio = MainAudio,
StartAtAudioTimes = {5, 7.2, 9.4, 11.6},
},
OnStart = function(self)
print("Tween playing")
end,
OnHeartbeat = function(self, alpha)
print("Tween alpha", alpha)
end,
OnEnd = function(self)
print("Tween completed")
end,
})
end
間隔
指定された期間と指定された頻度で、カスタムコールバック関数を秒ごとに実行します。Executes a custom callback function over a specified duration on a specified frequency, in seconds.フラッシュライトのようなイベントを繰り返すのに便利、オーディオの強度をパルスするなど最低可能な周波数は 0秒ですが、技術的に最低周波数は常に Heartbeat に制限されます。
構成キー | 説明 |
---|---|
StartTime | 秒単位で、シーン期間との間隔期間の開始。 |
EndTime | 秒単位で、インターバル期間がシーン期間に対して終了する。 |
Frequency | OnInterval 機能が、秒ごとに発射する頻度、最初の実行が StartTime であること。 |
OnStart | インターバルの連続が開始するときに発動するカスタム関数。 |
OnInterval | 指定された期間内のすべての間隔で発射するカスタム関数(StartTime から EndTime)。 |
OnEnd | インターバルの連続が終わると発動するカスタム関数。 |
SyncToAudio | インターバル期間をオーディオ配置に同期するかどうかを定義するテーブル。次のキーを受け入れます:
|
クライアントスキーマ
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
})
local ClientTimerUpdate = Schema:interval({
Frequency = 1,
SyncToAudio = {
StartAtAudioTime = 2.5,
EndAtAudioTime = 10,
Audio = MainAudio
},
OnInterval = function(self)
print(MainAudio.Sound.TimePosition, MainAudio.CurrentSoundIntensityRatio)
end,
})
end
予定表
間隔 と同じように、シーンで 2 回花火ディスプレイをスケジュールするなど、同じイベントに複数の特定の開始時間を定義できます。
構成キー | 説明 |
---|---|
StartTimes | シーンの期間に対する開始時間の表、秒単位。 |
OnStart | StartTimes テーブルで指定された時間ごとに発射するカスタム関数。 |
Skippable | スケジュールされたイベントを遅れて参加するユーザーまたはスケジュール開始時間の前に検索するときにスキップできるかどうかをブールで定義します。false に設定すると、参加/検索時間前に予定されたすべてのイベント開始時間が、参加/検索時間に発生します。 に設定すると、参加/検索後のスケジュールされた開始時間のみが発生します。デフォルトは false です。 |
SyncToAudio | スケジュールを オーディオ 構成に同期するかどうかを定義するテーブル。次のキーを受け入れます:
|
クライアントスキーマ
Schema.OnRun = function()
print("OnRun (Client)")
Schema:schedule({
StartTimes = {5, 27.25},
OnStart = function(self)
-- 一時的なハートビート接続を初期化する
local tempConnection = RunService.Heartbeat:Connect(function()
end)
-- 接続のフレームワークを通知する
Schema:inform(tempConnection)
end
})
end
通知する
フレームワークにモジュール、UI オブジェクト、接続などを通知するwhich are created in the OnRun lifecycle hook, ensuring they are properly cleaned up when 検索 する。使用ケースには以下が含まれます:
RunService.Heartbeat のような一時的なアドホック接続のフレームを通知して、シーンの期間の早期のポイントにアクセスするときに接続がクリーンアップされるようにする
サーバースキーマSchema.OnRun = function()print("OnRun (Server)")Schema:schedule({StartTimes = {5},OnStart = function(self)-- 一時的なハートビート接続を初期化するlocal tempConnection = RunService.Heartbeat:Connect(function()end)-- 接続のフレームワークを通知するSchema:inform(tempConnection)end})end接続またはその他の参照を初期化する OnRun ライフサイクルホック中にカスタム「クリーンアップ」関数を呼び出す で、 接続またはその他の参照を初期化する
サーバースキーマlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local RunService = game:GetService("RunService")local customModule = require(ReplicatedStorage:WaitForChild("CustomModule"))local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))local Schema = EventSequencer.createSchema()Schema.OnRun = function()print("OnRun (Server)")Schema:schedule({StartTimes = {5},OnStart = function(self)-- カスタムモジュールで「init」関数を呼び出すcustomModule.init()-- シーンクリーンアップでカスタムモジュールの「クリーン」関数を呼び出すSchema:inform(customModule, customModule.clean)end,})endModuleScript - カスタムモジュールlocal RunService = game:GetService("RunService")local CustomModule = {}CustomModule.init = function()-- ハートビート接続を初期化するCustomModule.connection = RunService.Heartbeat:Connect(function()end)endCustomModule.clean = function()-- 接続を切断してハートビート接続をクリアするif CustomModule.connection thenCustomModule.connection:Disconnect()CustomModule.connection = nilendendreturn CustomModule
機能
ロードシーン
loadScene(sceneName: string , startTime: number ?)
プログラマティックにシーンを sceneName でロードし、開始時点から startTime で始めます。シーンがサーバーからロードして再生開始する前の 5秒の「恵みの期間」があります。検索が発生してシーンが再生開始する前に。これは、正確に午後 4:15:00 に loadScene("[SceneName]", 20) を呼び出すと、フレームワークはリクエストされた 20 に加えて 5 秒待機し、午後 4:15:25 にシーンを開始します。
スクリプト
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- 現在のシーンが終了したときにロードする次のシーンを見つける
EventSequencer.onOrchestrationFinished:Connect(function(endedSceneName)
if endedSceneName == "PreShow" then
-- 「PreShow」が終了; コンサートで最初のシーンをロード
EventSequencer.loadScene("Track1")
elseif endedSceneName == "Track1" then
-- 「Track1」が終了; コンサートで2番目のシーンをロード
EventSequencer.loadScene("Track2")
else
-- ショーの前のシーンにループバック
EventSequencer.loadScene("PreShow")
end
end)
createSchema
createSchema(): table
シーンのスキームインスタンスを返して、シーンのロジックを作成します。
クライアントスキーマ
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Client)")
end
検索する
求める(時間: number )
現在ロードされたシーンの開始から、time 秒で、値を検索します。
スクリプト
local ReplicatedStorage = game:GetService("ReplicatedStorage")local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))EventSequencer.seek(95.58)
setSceneWarningTime
setSceneWarningTime(endSceneTimeWindow: number )
警告が発送されるすべてのシーンの 終わり からの時間量を設定します。警告を検出できるのは、クライアント側で onSceneEndingWarningForClient またはサーバー側で onSceneEndingWarningForServer を介してです。
スクリプト
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- シーンをロード
EventSequencer.loadScene("BeautifulScene")
-- シーンが終了する前に警告時間を 5秒に設定
EventSequencer.setSceneWarningTime(5)
-- シーンが終了わろうとしているときを検出する
EventSequencer.onSceneEndingWarningForServer:Connect(function()
warn("Scene is about to end!")
end)
設定SeekingPermissions
setSeekingPermissions(許可: table )
イベントの PlaceId および特定の UserIds および/または グループ およびその内の役割に基づいて許可を求めるグラント。詳しくは、シーンを検索して切り替える を参照してください。
getCurrent場景環境
getCurrentSceneEnvironment(): Folder (イエルド)
現在のシーンのクライアント側またはサーバー側の 環境 フォルダを返し、クライアント スキームスクリプトか サーバー スキームスクリプトから呼ばれるかによって変わります。
クライアントスキーマ
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local clientEnvironment
local serverEnvironment
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Client)")
-- シーン環境にアクセス;インラインモードには適用しない
clientEnvironment = EventSequencer.getCurrentSceneEnvironment()
serverEnvironment = EventSequencer.getCurrentServerEnvironmentFromClient()
print("Current time is:", timePositionObject.Value)
end
サーバースキーマ
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local serverEnvironment
local partColorConnection
local changePartColorEvent = script.Parent.Events.ChangePartColor
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Server)")
serverEnvironment = EventSequencer.getCurrentSceneEnvironment()
partColorConnection = changePartColorEvent.OnServerEvent:Connect(function(player, changedPart, newColor)
serverEnvironment.changedPart.Color = newColor
end)
end
客户から現在のサーバー環境を取得する getCurrentServerEnvironmentFromClient
getCurrentServerEnvironmentFromClient(): Folder (イエルド)
現在のシーンの サーバー側の 環境 フォルダを返します。getCurrentSceneEnvironment とは異なり、クライアント スキームスクリプトからこれを呼び出すことができます。
クライアントスキーマ
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local clientEnvironment
local serverEnvironment
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Client)")
-- シーン環境にアクセス;インラインモードには適用しない
clientEnvironment = EventSequencer.getCurrentSceneEnvironment()
serverEnvironment = EventSequencer.getCurrentServerEnvironmentFromClient()
print("Current time is:", timePositionObject.Value)
end
isLoading場面
isLoadingScene(): boolean
サーバーから呼び出して、現在シーンがロードされているかどうかを知る。
スクリプト
local ReplicatedStorage = game:GetService("ReplicatedStorage")local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))print(EventSequencer.isLoadingScene())while EventSequencer.isLoadingScene() dotask.wait()endprint("Scene loaded")
イベント
onSceneEndingWarningForClient
シーンが終了わろうとする前に、クライアントで発火します。デフォルト時間は 3秒ですが、setSceneWarningTime を通じて設定できます。このイベントは、LocalScript でのみ接続できます。
本地スクリプト
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- シーンが終了するときを検出する (クライアント側)
EventSequencer.onSceneEndingWarningForClient:Connect(function()
warn("Scene is about to end!")
end)
onSceneEndingWarningForServer
シーンが終了わろうとする前に、サーバーで発火します。デフォルト時間は 3秒ですが、setSceneWarningTime を通じて設定できます。このイベントは、Script でのみ接続できます。
スクリプト
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- シーンが終了するときを検出する (サーバー側)
EventSequencer.onSceneEndingWarningForServer:Connect(function()
warn("Scene is about to end!")
end)
onSceneLoadedForClient
シーンが開始すると、クライアントで発火します。このイベントは LocalScript でのみ接続できます。
本地スクリプト
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- シーンが開始されているかを検出する (クライアント側)
EventSequencer.onSceneLoadedForClient:Connect(function()
warn("Scene is starting!")
end)
オンオーケストレーション完了
シーンが 時間長 に達し、効果的に終了したときに、サーバーで炎が起こります。このイベントは、終わったばかりのシーンのための endedSceneName 文字列名の引数を受け取り、条件付きで 別のシーンをロードする ことができます。接続できるのは、Script でのみです。
スクリプト
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- 現在のシーンが終了したときにロードする次のシーンを見つける
EventSequencer.onOrchestrationFinished:Connect(function(endedSceneName)
if endedSceneName == "PreShow" then
-- 「PreShow」が終了; コンサートで最初のシーンをロード
EventSequencer.loadScene("Track1")
elseif endedSceneName == "Track1" then
-- 「Track1」が終了; コンサートで2番目のシーンをロード
EventSequencer.loadScene("Track2")
else
-- ショーの前のシーンにループバック
EventSequencer.loadScene("PreShow")
end
end)