【UEFN】Billboard Device (ビルボードの仕掛け) の使い方|Verse制御でテキストを動的に書き換える手順
こんにちは、UEクリエイターズです。今回もUEFN(Unreal Editor for Fortnite)の使い方について解説していきます。
この記事では、Billboard Device(ビルボードの仕掛け)のテキスト動的変更とVerseによる制御について具体的に説明していきます。
動画でも解説しているので参考にしてみてください。
概要

Billboard Device(ビルボードの仕掛け)は、3D空間内にテキスト情報を表示するためのデバイスです。HUDデバイスとは異なり、プレイヤーがその場所に近づくことで文字を認識できる仕組みを提供します。

従来、特定の条件(レベルアップや開店・閉店など)でテキストを切り替えるには、複数のビルボードを重ねて配置し、表示・非表示を切り替える手法が取られてきました。しかし、この方法ではデバイス数が増大し、メンテナンス性やメモリ負荷に課題が生じます。



Verseを活用することで、1台のビルボードデバイスに対して動的に文字列を上書き(SetText)することが可能になります。本記事では、Switch Device(スイッチの仕掛け)と連携し、ステータスを「OPEN」から「CLOSED」へ切り替える実装例を解説します。
検証環境:UnrealEditor5.8(2026年1月時点)
Billboard Device の基本設定
実装に必要なデバイスをビューポートに配置し、以下の通りプロパティを設定します。
Billboard Device(ビルボードの仕掛け)

- Text(テキスト): 空欄に設定(ゲーム進行中に動的に出現させる演出のため)。
- Outline(アウトライン): Thick(厚い)に変更。視認性を向上させるために推奨されます。
- Show Border(ボーダーを表示): デバッグ時や黒板のような見た目が必要な場合は有効にしますが、通常は非表示で使用します。
Switch Device(スイッチの仕掛け)

- デフォルト設定で問題ありません。オン/オフの状態切り替えイベントを利用します。

Verseによる制御・実装
Verseでビルボードのテキストを制御する際、最も重要なのは「message型」の扱いです。
message型とローカライズ
ビルボードの SetText 関数は、通常の string 型(文字列)ではなく、message 型のみを受け付けます。これは、将来的な多言語対応(ローカライズ)を前提とした設計になっているためです。Verseコード内でメッセージを定義する際は、<localizes> 指定子を使用します。
実装コード
以下のコードをVerseファイルに記述し、ビルボードとスイッチを紐付けます。
フルコード
# ----------------------------------------------
# Documentation: https://uecreators.com/billboard-verse
# ----------------------------------------------
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
# ボタンで看板の文字を書き換えるデバイス
billboard_manager := class(creative_device):
# 1. 書き換えたい看板(billboard)
@editable
Mybillboard : billboard_device = billboard_device{}
# 2. 切り替えスイッチ
@editable
MySwitch : switch_device = switch_device{}
# ローカライズ(翻訳)用テキストの定義
# Verseでbillboardの文字を変えるには、"message"という型にする必要があります
TextOpen<localizes> : message = "STATUS: OPEN"
TextClosed<localizes> : message = "STATUS: CLOSED"
# ゲーム開始時の処理
OnBegin<override>()<suspends>:void=
# スイッチの状態が変わったらイベント発動
MySwitch.TurnedOnEvent.Subscribe(OnOpened)
MySwitch.TurnedOffEvent.Subscribe(OnClosed)
# スイッチON:billboardを「OPEN」にする
OnOpened(Agent:agent):void=
# SetText関数には、stringではなくmessage型(TextOpen)を渡します
Mybillboard.SetText(TextOpen)
Print("billboardを「OPEN」に変更しました")
# スイッチOFF:billboardを「CLOSED」にする
OnClosed(Agent:agent):void=
Mybillboard.SetText(TextClosed)
Print("billboardを「CLOSED」に変更しました")
コードのポイント
- Subscribe(サブスクライブ):
TurnedOnEventおよびTurnedOffEventを購読することで、スイッチの状態変化を検知します。 - SetText(セットテキスト): 指定したビルボードの
Text項目を動的に書き換えます。この際、引数としてmessage型(上記コードではTextOpenなど)を渡します。 - 引数 Agent: イベントから送られてくるプレイヤー情報(エージェント)を受け取るための受け皿が必要です。今回のロジックでは使用しませんが、Verseのイベント処理における必須の記述です。
まとめ
Verseによるビルボード制御をマスターすることで、以下のようなメリットが得られます。
- デバイス数の削減: 100段階のレベルアップ表示が必要な場合でも、100個のビルボードを用意する必要はなく、1つのデバイスで完結します。
- メンテナンス性の向上: アウトライナー上で重なったデバイスを探す手間が省け、コード上でロジックを一括管理できます。
- グローバル対応:
message型を使用することで、世界中のプレイヤーに向けたローカライズ対応がスムーズになります。
タイクーン系やシミュレーション系のマップ制作において、動的なステータス表示は非常に強力な武器になります。ぜひ自身のプロジェクトに取り入れてみてください。
関連資料
動画版視聴はこちら:https://youtu.be/f4hHeE8uSek



