UEProg by milkc0de

    Search

    Home

    UEFN Verse: ガード撃破位置にVFXを出す

    Guardヘッドショットで「headshot」を1秒表示する(3デバイスのみ)

    UEFN / Verseでプレイヤー名を表示する方法

    UEFN Verseサンプル - Trigger起動でBearのPropがプレイヤーについてくる

    ガードの行動範囲を「プレイヤー中心」に縛る(Leash)ガードAI

    通常編集とシンプル編集で 窓開けリセットの最短時間を測定

    UEFN: 建物内が暗くなる場合の対処(Cast Shadow一括OFF) by milkc0de

    UEFN / VerseのみでPINコード・パスコード入力パッドを実装する

    UEFN / Verseのみで作ったPINコード入力パッドを初心者向けに分解して解説する

    UEProg by milkc0de

    Home

    UEFN / Verseでプレイヤー名を表示する方法

    UEFN Verseサンプル - Trigger起動でBearのPropがプレイヤーについてくる

    UEFN Verse: ガード撃破位置にVFXを出す

    Guardヘッドショットで「headshot」を1秒表示する(3デバイスのみ)

    ガードの行動範囲を「プレイヤー中心」に縛る(Leash)ガードAI

    通常編集とシンプル編集で 窓開けリセットの最短時間を測定

    UEFN: 建物内が暗くなる場合の対処(Cast Shadow一括OFF) by milkc0de

    UEFN / VerseのみでPINコード・パスコード入力パッドを実装する

    UEFN / Verseのみで作ったPINコード入力パッドを初心者向けに分解して解説する

    milkc0de

    XTwitch
    UEProg by milkc0de
    /
    UEFN / Verseでプレイヤー名を表示する方法
    UEFN / Verseでプレイヤー名を表示する方法

    UEFN / Verseでプレイヤー名を表示する方法

    by milkc0de

    ー なぜ string として扱えないのか ー

    UEFNのVerseでは、プレイヤー名を通常の string として取得することはできません。

    これはバグではなく、仕様です。

    なぜ string で取得できないのか

    プレイヤー名は

    • 個人識別情報に該当し得る
    • 外部保存や外部送信を防ぐ必要がある
    • 表示環境ごとに処理が異なる可能性がある

    という理由から、直接文字列化できない設計になっています。

    つまり、次のようなことは不可能です。

    var PlayerName : string = GetPlayerName()

    そのようなAPI自体が存在しません。

    正しい設計思想

    Verseではプレイヤー名は

    「取得するデータ」ではなく

    「表示するための message」

    として扱います。

    つまり、

    • string化は不可
    • ログ保存も不可
    • 外部通信も不可
    • UI表示のみ可能

    という制限付き設計です。

    image

    正しい実装方法(Billboardに表示)

    重要ポイント

    1. agent → string はできない

    プレイヤー名を string に変換するAPIは存在しません。

    2. message 型のみ許可される

    UIへ表示する場合は message 型を使います。

    3. <localizes> が必要

    message を生成する関数には <localizes> を付与します。

    技術的背景

    Verseは型安全性を強く重視しています。

    • message はローカライズ前提型
    • string は汎用データ型
    • 個人情報は string として扱わせない

    この制限は意図的です。

    不便に見えますが、 ゲーム内個人情報保護のための設計です。

    応用例

    「◯◯がボタンを押しました」と表示する

    AgentPressedMessage<localizes>(value:agent) : message="{value} pressed the button"
    
    OnTriggered(Agent:?agent):void=
        if(A := Agent?):
            Billboard.SetText(AgentPressedMessage(A))

    まとめ

    • プレイヤー名は string では扱えない
    • 表示は message 経由のみ
    • 保存や外部送信は不可
    • これはセキュリティ設計

    結論

    プレイヤー名はデータではなく表示専用オブジェクト。

    Verseではこれが正解の扱い方です。

    using { /Fortnite.com/Devices }
    using { /Verse.org/Simulation }
    
    display_player_name_device := class(creative_device):
    
        @editable
        Trigger: trigger_device = trigger_device{}
    
        @editable
        Billboard: billboard_device = billboard_device{}
    
        # agent を message に変換するローカライズ関数
        AgentToMessage<localizes>(value:agent) : message="{value}"
    
        OnBegin<override>()<suspends>:void=
            Trigger.TriggeredEvent.Subscribe(OnTriggered)
    
        OnTriggered(Agent:?agent):void=
            if(A := Agent?):
                var NameMessage:message = AgentToMessage(A)
                Billboard.SetText(NameMessage)