【UEFN】Lock Device (ロックの仕掛け) の使い方|Verse連携による条件付き解錠の実装
こんにちは、UEクリエイターズです。今回もUEFN(Unreal Editor for Fortnite)の使い方について解説していきます。この記事では、Lock Device(ロックの仕掛け)を使ったドアのロック制御とVerse連携について具体的に説明していきます。
動画でも解説しているので参考にしてみてください。
概要

今回実装するのは、Conditional Button(条件付きボタンの仕掛け)で特定のアイテム(鍵など)を消費し、Lock Device(ロックの仕掛け)で施錠されたドアを開けるというゲームロジックです。
脱出ゲームやホラーマップ、RPGなどで頻出する「最初はロックされており、キーアイテムを入手することで通行可能になるドア」を、Verseを使って効率的に管理・実装する方法を解説します。
検証環境:Unreal Editor 5.8(2025年12月時点)
Lock Device の基本設定

まずはビューポート上での物理的なセットアップと、デバイスのプロパティ設定を行います。
1. ドアとロックの配置


コンテンツブラウザからLock Device(ロックの仕掛け)と、ドア付きのオブジェクト(例:Agency Door Frameなど)を配置します。

ここでのポイントは、Lock Deviceをドアのオブジェクトに物理的に接触させる(アタッチする)ことです。

- 未接続状態: デバイスのライトが「赤色」。
- 接続成功: ドアに近づけてライトが「青色」に変われば、自動的に制御対象として認識されています。
一般的には、ドア枠の上部中央などに配置すると自然です。
2. Lock Device のプロパティ設定
今回は「最初は鍵がかかっていて開かない」状態を作るため、Lock Deviceの詳細パネルで以下の設定を確認してください。

- Starts Locked(ゲーム開始時にロック):
Locked - Initial Door Position(初期のドアの位置):
Closed
3. Conditional Button の準備
鍵となるアイテムを判定するために、Conditional Button(条件付きボタンの仕掛け)を配置します。


- Key Items(キーアイテム): 必要なアイテム(今回は「Key」など)をコンテンツブラウザからドラッグ&ドロップで登録します。
- Item Spawner: テスト用に、同じキーアイテムを登録したItem Spawner(アイテムスポナーの仕掛け)も配置しておきましょう。
Verseによる制御・実装
配置したデバイスをVerseで制御し、インタラクションの判定とドアの解錠・開放を自動化します。
Verseデバイスの作成

Verse Explorerから新しいVerseファイルを作成します。今回はクラス名を door_lock_manager としました。
ロジックの解説
実装する主な機能は以下の通りです。
- イベントの購読:
KeyButton.ActivatedEventを監視し、プレイヤーが条件(鍵の使用)をクリアしたタイミングを検知します。 - Unlock(解錠):
lock_deviceのUnlock関数を呼び出し、施錠状態を解除します。 - Open(開放):
Open関数も同時に呼び出すことで、物理的にドアを開き、プレイヤーがすぐに通れるようにします。
重要なポイント(Agentの受け渡し)
Unlock や Open 関数を実行する際、引数として Agent(イベントを起動したプレイヤー情報)を渡す必要があります。これにより、「誰がそのアクションを起こしたか」という情報をデバイス間で引き継ぐことができます。
以下が実装用のフルコードです。
コード スニペット
# ----------------------------------------------
# Documentation: https://uecreators.com/lock-device-verse
# ----------------------------------------------
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
# 条件付きボタンを使ってドアのロックを解除するデバイス
door_lock_manager := class(creative_device):
# 制御対象の「lock_device」(ドアにアタッチされているもの)
@editable
MyLock : lock_device = lock_device{}
# 鍵アイテムを要求する「conditional_button」
# エディタ側で、必要なアイテム(鍵)を設定しておきます
@editable
KeyButton : conditional_button_device = conditional_button_device{}
# ゲーム開始時の処理
OnBegin<override>()<suspends>:void=
# ボタンの「起動(条件クリア)」イベントを登録
# プレイヤーが正しいアイテムを持ってconditional_buttonを押すと作動します
KeyButton.ActivatedEvent.Subscribe(OnKeyUsed)
# 鍵(アイテム)を使ってボタンが押された時に実行される関数
# 引数(Agent)には、ボタンを押したプレイヤーの情報が入ってきます
OnKeyUsed(Agent:agent):void=
Print("鍵を確認。ロックを解除します。")
# 1. 鍵を開ける(Unlock)
# 引数(Agent)を渡すことで、「誰が開けたか」をlock_deviceに伝えます
MyLock.Unlock(Agent)
# 2. ドアを開放する(Open)
# 親切設計。物理的にドアを開き、プレイヤーを通れるようにします
MyLock.Open(Agent)
エディタでの紐付け

コードをビルド(Compile Verseを押す)した後、作成した door_lock_manager デバイスをレベルに配置します。詳細パネルで以下の紐付けを行ってください 。

- MyLock: 配置済みの Lock Device を選択。
- KeyButton: 配置済みの Conditional Button を選択。
まとめ
今回はLock DeviceとConditional ButtonをVerseで連携させ、アイテムによるドア解錠システムを作成しました。
この door_lock_manager デバイスは汎用性が高く、レベル内に複数配置して、それぞれ別のドアとボタンを紐付けるだけで、同様のギミックを量産することが可能です。脱出ゲームやアドベンチャーゲームの制作において非常に効率的な手法ですので、ぜひ活用してみてください。
関連資料
動画版の視聴はこちら:https://youtu.be/CHTkUy5rPDg

