【UEFN】スイッチの(切り替える)仕掛けの使い方|オン/オフ制御からセーブ機能(持続データ)まで
こんにちは、UEクリエイターズです。今回もUEFN(Unreal Editor for Fortnite)の使い方について解説していきます。
この記事では、「スイッチの(切り替える)仕掛け」(Switch Devices)について具体的に説明していきます。
動画でも解説しているので参考にしてみてください。
スイッチの仕掛けとは?

スイッチの仕掛けは、一言でいうと「状態を切り替えることができる仕掛け」です。プレイヤーがインタラクト(操作)できる物理的なスイッチとして使用でき、他の仕掛けと組み合わせてドアを開閉したり、照明をつけたり消したりすることができます。

以前解説した「ボタン」の仕掛けは、押した時に決まった1つの動作を起動するものでした。しかし、このスイッチの仕掛けは「オン」と「オフ」の2つの状態を切り替えることができるのが大きな特徴です。

スイッチの仕掛けの実演例
スイッチで具体的にどのようなことができるのか、いくつかの実演例を紹介します。
基本的な使い方(ガードの出現・消滅)

まず、最も標準的なスイッチです。デフォルトの状態では、スイッチは「オフ」になっており、見た目は赤色です。近づくとインタラクトテキスト(例:「ガードを出現させますか」)が表示されます。

ここでインタラクトすると、スイッチが「オン」に切り替わり、見た目が緑色になります。 この例では、「オン」になった時にガードの仕掛けが有効化され、ガードが出現するように設定しています。

オンの状態でもう一度近づくと、今度はオフに切り替えるためのテキスト(例:「ガードを消滅させますか」)が表示されます。これをインタラクトすると、スイッチが「オフ」に戻り、ガードが消滅(無効化)されます。
このように、オンの時とオフの時で、それぞれ異なる動作を割り当てることができます。
カスタムメッシュ(見た目の変更)

スイッチの仕掛けは、「カスタムメッシュ」機能によって見た目を自由に変更できます。 動画では、以下のようなメッシュを紹介しています。
スイッチ切り替え


家電製品に付いているようなスイッチの見た目ですね。
アンティークレバー


赤ボタン(オンでランプが点灯)


古めかしいレバー


サーキットブレーカー


これらのカスタムメッシュも、オンとオフの状態で見た目が切り替わります。ゲームの雰囲気に合わせて使い分けることができます。
高度な機能① 状態をリセット
スイッチには、「状態をリセットする時間」という便利な機能があります。


例えば、この時間を「5秒」に設定すると、スイッチをオンにしても、5秒後には自動的にオフの状態に戻ります。
時限式の仕掛け(一定時間だけドアを開ける、照明をつけるなど)を作りたい場合に役立ちます。
高度な機能② 相互排他的
「相互排他的(そうごはいたてき)」は、複数のスイッチをグループ化し、その中で同時に1つしかオンにできないようにする機能です。
同じ「インデックス番号」(グループ番号)を指定したスイッチ同士が自動的に連携します。 例えば、赤・青・黄の3つのライトとスイッチがあるとします。


- 「レッド」のスイッチをオンにすると、赤いライトが点灯します。
- 次に「ブルー」のスイッチをオンにすると、青いライトが点灯します。
- この時、「相互排他的」機能により、グループ内の他のスイッチ(この場合は「レッド」)が自動的にオフに切り替わります。
このように、複数の選択肢から必ず1つだけを選ばせたい場合(例:出現させるガードの種類を選ぶ、乗り物を選ぶなど)に非常に強力な機能です。
スイッチの仕掛けの具体的な使い方(ユーザーオプション)
ここからは、スイッチの仕掛けをレベルに配置し、詳細パネルの「ユーザーオプション」で設定する方法を解説します。
配置方法

スイッチの仕掛けは、コンテンツブラウザーの「フォートナイト」>「仕掛け」>「logic」フォルダの中に「切り替える」という名前で格納されています。これをドラッグ&ドロップでレベルに配置します。
基本オプション

- ゲーム開始時に有効化: デフォルトは「True」です。ゲーム開始時からスイッチが存在するようになります。
- 最初の状態: ゲーム開始時に「オン」か「オフ」どちらの状態でスタートするかを決めます。デフォルトは「オフ(False)」です。
- ゲーム中に表示: スイッチの見た目を表示するかどうか。Falseにすると、見た目も当たり判定もなくなります。
- オンにする際のテキスト / オフにする際のテキスト: プレイヤーが近づいた時に表示されるインタラクトテキストを自由に変更できます。
見た目とサウンド

- 仕掛けのモデル: ここで見た目(カスタムメッシュ)を選択できます。「アンティークレバー」「赤ボタン」「サーキットブレーカー」「チェックボックス」など、様々な種類が用意されています。
- サウンド: 切り替え時の効果音を鳴らすかどうかを設定します(デフォルトはTrue)。
インタラクト設定

- インタラクトの許可: プレイヤーが近づいて操作できるかを設定します(デフォルトはTrue)。もしこれをFalseにした場合は、プレイヤーは直接操作できなくなるため、他の仕掛けからの信号(イベント)でオン/オフを切り替える必要があります。
- インタラクト時間: スイッチを起動するまでに必要な「長押し」の時間を秒単位で設定できます(デフォルトは0秒)。
詳細設定(制限・トリガー)

- 変更回数を制限: スイッチを切り替えられる回数に上限を設けることができます。
- クールダウン時間: 一度操作した後、次に操作できるようになるまでの待ち時間(ラグ)を設定できます。
- 許可されるクラス / 許可されるチーム: スイッチを操作できるプレイヤーを特定のチームやクラスに限定できます。
- インタラクト範囲: スイッチを操作できる距離の範囲を設定します。
詳細設定(リセット・相互排他)

- 状態をリセットする時間: オンにしてから自動でオフに戻るまでの時間を設定します(実演例で紹介)。
- 相互排他的: この機能を使う場合は、ここにチェックを入れ、連携させたいスイッチ同士で同じ「インデックス値」(グループ番号)を指定します。
詳細設定(プレイヤーごとの状態)

- プレイヤーごとに状態を保存: この設定が非常に重要です。
- False(デフォルト): スイッチはマップに1つだけで、全員で共有されます。誰かがオンにすれば、他のプレイヤーから見てもオンになります。
- True: スイッチの状態がプレイヤーごとに個別に保存されます。Aさんがオンにしても、Bさんには影響しません(Bさんから見たらオフのままです)。
- 例として、BGMのオン/オフ設定などは、プレイヤーごとに個別で設定できるように「True」にしておくのが適切です。
持続データ(セーブ機能)の使い方

スイッチの仕掛けには、「持続データ」という強力な機能が備わっています。
持続データとは?

「持続データ」とは、簡単に言えば「セーブ機能」のことです。通常、ゲームを終了(ログアウト)すると、マップの状態はリセットされてしまいます。しかし、持続データを使うと、ゲームセッションをまたいで仕掛けの状態を保持することができます。
つまり、プレイヤーがマップから退出しても、次回再び遊びに来た時に「続きから」遊べるようになります。これは、プレイヤーの統計情報(セーブデータ)を裏側でアップロード・ダウンロードすることで実現されています。
持続データ対応の仕掛け
この持続データ機能に対応しているのは以下の4つの仕掛けです。
- スイッチの仕掛け
- トラッカーの仕掛け
- タイマーの仕掛け
- セーブポイントの仕掛け
スイッチの仕掛けでは、オン/オフの状態をセーブできます。例えば、BGMをオフに設定した場合、次回ゲームに入り直した時もオフの状態が保持されます。
スイッチの持続データ設定

スイッチの仕掛けでセーブ機能を有効にするための設定です。
- 持続データを使用: まず、これを「True」にします。これでセーブ機能がオンになります。
- オートセーブ: これを「True」にすると、スイッチの状態が切り替わるたびに、自動でセーブ(書き込み)が行われます。
- 自動読み込み: これを「True」にすると、プレイヤーがゲームに参加した時に、自動で前回のセーブデータ(スイッチの状態)を読み込んでくれます。
基本的には、この3つをすべて「True」にしておけば、プレイヤーが意識することなく自動でセーブとロードが行われるようになります。
衝突の解決(上級設定)

これは「プレイヤーごとに状態を保存」がFalse(=全員でスイッチを共有)に設定されている場合の、少し難しい設定です。
全員で共有するスイッチ(例:マップのボスを倒したかどうか)の状態をセーブした後、後日、別々のプレイヤーが同じセッションに集まった時、「ボスの状態は倒した状態にすべきか? それとも倒す前の状態にすべきか?」という問題(衝突)が発生します。 それを解決するためのルールが「衝突の解決」です。
- 多数決(デフォルト): セッションに参加したプレイヤーたちの前回の状態で、最も多かった状態(例:10人中8人が「倒した」状態なら「倒した」状態)を採用します。
- 最初のプレイヤー: 最も古くから参加しているプレイヤーの状態を優先します。
- 優先オン / 優先オフ: 参加者の中に1人でもその状態の人がいたら、その状態を優先します。
マルチプレイヤーゲームでワールドの状態を共有・セーブする場合は考慮が必要ですが、まずは「プレイヤーごとに状態を保存」をTrueにして使うのが簡単です。
実演例の裏側(設定方法)
最後に、実演例で紹介した「ガードの出現」と「相互排他的なライト」の具体的な設定方法を解説します。
ガードの出現・消滅の設定

- 「ガードスポナー」の仕掛けを配置します。
- ガードスポナーのオプションで、「ゲーム開始時に有効化」をFalse(オフ)にします。これでゲーム開始時にはガードが出現しなくなります。
- (任意)「タイマーでスポーン」をTrue、「スポーンタイマー」を0秒にしておくと、有効化された瞬間にガードが出現します。
- ガードスポナーの「ユーザーオプション(機能)」で、イベントを設定します。
- 「有効化」の項目に、対象スイッチの「オンに切り替え時」イベントを紐付けます。
- 「無効化」の項目に、対象スイッチの「オフに切り替え時」イベントを紐付けます。
相互排他的なライトの設定

- 「カスタマイズ可能なライト」の仕掛けを3つ配置します。
- それぞれのライトのオプションで、「ライトのカラー」を赤・青・黄に設定します。
- 3つのライトすべての「最初の状態」をFalse(消灯)にします。
- 3つのスイッチを配置し、それぞれの「相互排他」をオンにして、「インデックス値」をすべて同じ番号(例:0)に設定します。
- ライトとスイッチを紐付けます。(例:赤いライトの場合)
- 赤いライトの「オンにする」イベントに、赤いスイッチの「オンに切り替え時」を紐付けます。
- 赤いライトの「オフにする」イベントに、赤いスイッチの「オフに切り替え時」を紐付けます。
- これを青、黄のライトとスイッチでも同様に行います。
まとめ
今回は、スイッチの仕掛けの基本的な使い方から、高度な「相互排他的」、そして「持続データ(セーブ機能)」まで詳しく解説しました。
持続データは少し難しい内容ですが、プレイヤーが続きから遊べるゲームを作るためには必須の機能です。まずはBGMのオン/オフ設定など、簡単なところから持続データを試してみてはいかがでしょうか。

この記事が、皆さんのゲーム制作の参考になれば幸いです。
関連資料
動画版:https://youtu.be/HVUad3JwzSQ



