UEFN Verse言語 メタバース

備忘録UEFN:カスタム仕様のカウントダウンタイマー(1)

【UEFN】カスタム仕様のカウントダウンタイマー(1)【Verse】
みなみ

カスタム仕様のカウントダウンタイマーの作り方について教えてください!

りゅう

初心者向けにわかりやすく解説してほしいですね!

こんなお悩みを解決します。

 本記事の内容
 本記事の信頼性

この記事を書いている僕は、クリエイター兼ブロガーです。実際にUEFNを使っており、現在進行形で学んでいます。

今回は、カスタム仕様のカウントダウンタイマーについて解説します。

なお、以下のコードの解説文は、プログラミング初心者の主がなんとか調べて記述したものです。

参考程度にどうぞ。

あすか

誤りがありましたら恐縮ですm(_ _)m

使用するVerse言語機能

使用するVerse言語機能

・if (条件):

if 式は条件をテストし、失敗する 可能性のある値にアクセスします。

・block (ブロック):

この例では、カウントダウン タイマーが作成された場合に UI を 初期化する ために block 式を使用しています。

・loop (ループ):

loop 式は UI を更新し、カウントダウンがゼロになると終了します。

・spawn (スポーン):

spawn 式は任意の コンテキスト で 非同期式 を開始します。

・message (メッセージ):

メッセージ タイプはテキストをローカライズできることを意味し、メッセージ変数の初期化に使用する文字列は、メッセージのデフォルトのテキストと言語です。

・class (クラス):

この例では、カウントダウンを管理、表示する Verse クラスを作成します。

・constructor (コンストラクタ):

コンストラクタは、関連付けられているクラスのインスタンスを作成する特別な関数です。

・Access specifier (アクセス指定子):

アクセス指定子を使用してコードのアクセス レベルを設定できます。

公式ドキュメント

使用するVerse API

使用するVerse API

・Sleep (スリープ):

Sleep() API を使用することにより、UI の更新間隔を選択できます。

・Event (イベント):

Verse で独自のイベントを作成し、イベントの発生時にカスタム仕様の機能を追加できます。

・Verse UI:

プレイヤーとゲームに関する情報を表示するカスタム仕様のインゲーム UI を作成します。

公式ドキュメント

カスタム仕様のカウントダウンタイマーのVerse言語

カスタム仕様のカウントダウンタイマーのVerse言語

これはカウントダウンタイマーゲームのスクリプトです。

このスクリプトは、ボタンが押されるたびにカウントダウンタイマーに追加の時間を加え、カウントダウンが終了するとゲームを終了する動作を行います。

▼ 下記のコードはカウントダウンタイマーを作成するためのカスタム仕様のコードです。

この部分では、使用するモジュールをインポートしています。これにより、UI、数学的な演算、Fortnite ゲームの UI、および色に関連する機能を利用できるようになります。

  1. Verse モジュールのインポート:
using { /UnrealEngine.com/Temporary/UI }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Fortnite.com/UI }
using { /Verse.org/Colors }

countdown_timerのクラス定義

▼ 下記のコードは、カウントダウンタイマーを表すcountdown_timerクラスの定義です。

  1. クラスの定義と変数の追加:
countdown_timer := class:
    MaybePlayerUI : ?player_ui = false
    var RemainingTime : float = 0.0
    var Canvas : canvas = canvas{}
    RemainingTimeWidget : text_block = text_block{DefaultTextColor := NamedColors.White}
    RemainingTimeText<localizes>(CurrentRemainingTime : int) : message = "{CurrentRemainingTime}"
# countdown_timer クラスを定義
countdown_timer := class:
# プレイヤーの UI の存在を表すオプション型の変数を定義
    MaybePlayerUI : ?player_ui = false
# カウントダウンの残り時間を表す変数を定義
    var RemainingTime : float = 0.0
# キャンバスウィジェットを表す変数を定義
    var Canvas : canvas = canvas{}
# テキストブロックウィジェットを表す変数を定義し、デフォルトのテキスト色を白色に設定
    RemainingTimeWidget : text_block = text_block{DefaultTextColor := NamedColors.White}
# 残り時間を表すメッセージを返す関数を定義。ローカライズに対応
    RemainingTimeText<localizes>(CurrentRemainingTime : int) : message = "{CurrentRemainingTime}"

インスタンスが作成されていない理由

var RemainingTime : float = 0.0の詳細

var Canvas : canvas = canvas{}の詳細

RemainingTimeWidget : text_block = text_block{DefaultTextColor := NamedColors.White}の詳細

RemainingTimeとRemainingTimeWidgetの関係性

RemainingTimeText(CurrentRemainingTime : int) : message = "{CurrentRemainingTime}"の詳細

RemainingTimeとRemainingTimeWidgetとRemainingTimeTextの関係性

MaybePlayerUI : ?player_ui = falseの詳細

MaybePlayerUI、RemainingTime、RemainingTimeWidget及びRemainingTimeTextの関係性

player_uiクラスとは

player_uiクラスのメンバー関数について

メンバー関数とシグネチャについて

(CurrentRemainingTime : int) の詳細

UIの作成

▼ 下記のコードは、カウントダウンタイマーを表示するためのUIを作成するためのクラス定義です。

整数パラメータCurrentRemainingTimeを受け取り、その値を表示するためのRemainingTimeTextという名前の関数を定義しています。{CurrentRemainingTime}はメッセージとして返されます。

  1. UI の作成:
countdown_timer := class:
    block:
        set Canvas = canvas:
            Slots := array:
                canvas_slot:
                    Anchors := anchors:
                        Minimum := vector2{X := 0.5, Y := 0.05}
                        Maximum := vector2{X := 0.5, Y := 0.05}
                    Alignment := vector2{X := 0.5, Y := 0.0}
                    Offsets := margin{Top :=0.0, Left := 0.0, Bottom := 0.0, Right := 0.0}
                    SizeToContent := true
                    Widget := RemainingTimeWidget
countdown_timer := class:
block:
    # クラスがインスタンス化されたときに実行されるコードブロックの開始を示します。

    set Canvas = canvas:
        # Canvas 変数を canvas オブジェクトで設定します。

        Slots := array:
            # Slots 変数に、配列である array を代入します。

            canvas_slot:
                # Slots 配列に canvas_slot という名前の要素を追加します。
                # キャンバス上の特定のスロットを表します。

                Anchors := anchors:
                    # Anchors 変数を anchors オブジェクトで設定します。
                    # スロットの配置の基準点を指定します。

                    Minimum := vector2{X := 0.5, Y := 0.05}
                    # Anchors の Minimum プロパティを指定された値で設定します。
                    # スロットの下端の位置を設定します。

                    Maximum := vector2{X := 0.5, Y := 0.05}
                    # Anchors の Maximum プロパティを指定された値で設定します。
                    # スロットの上端の位置を設定します。

                Alignment := vector2{X := 0.5, Y := 0.0}
                # canvas_slot の Alignment プロパティを指定された値で設定します。
                # スロットの配置位置を設定します。

                Offsets := margin{Top := 0.0, Left := 0.0, Bottom := 0.0, Right := 0.0}
                # canvas_slot の Offsets プロパティを指定された値で設定します。
                # スロットの上下左右の余白を設定します。

                SizeToContent := true
                # canvas_slot の SizeToContent プロパティを true に設定します。
                # スロットを内部のコンテンツに合わせてサイズ調整するかを指定します。

                Widget := RemainingTimeWidget
                # canvas_slot の Widget プロパティを指定されたウィジェットに設定します。
                # スロットに表示するウィジェットを指定します。

block式について

set Canvas = canvas:の詳細

新しく変数を作成する理由

set Canvas = canvas:がsetである理由

Slots := arrayの詳細

canvas_slot:の詳細

【重要】キャンバス・スロット・ウィジェットについて

名前の要素を追加する理由

Anchors := anchors:の詳細

vector2について

Mini,Maxの詳細

Alignment := vector2{X := 0.5, Y := 0.0}の詳細

canvas_slot構造体の詳細

Offsets := margin{Top := 0.0, Left := 0.0, Bottom := 0.0, Right := 0.0}の詳細

margin構造体について

SizeToContent := true

Widget := RemainingTimeWidget

UIを表示させるための関数

StartCountdown関数の追加から始まります。

StartCountdown() : void =
    Print("Starting countdown")

    if (PlayerUI := MaybePlayerUI?):
        PlayerUI.AddWidget(Canvas)

if (PlayerUI := MaybePlayerUI?):PlayerUI.AddWidget(Canvas)

player_uiクラスについて

countdown_timer_exampleクラスの定義

▼ 下記のコードは、countdown_timer_example というクラスを定義しています。

このクラスは creative_device クラスを継承しており、カウントダウンタイマーの例を実装しています。

 using { /Verse.org/Simulation }
 using { /Fortnite.com/Devices }

 countdown_timer_example := class(creative_device):

     @editable
     AddMoreTimeButton : button_device = button_device{}

     @editable
     EndGame : end_game_device = end_game_device{}

     var CountdownTimer : countdown_timer = countdown_timer{}
     InitialCountdownTime : float = 30.0

     OnBegin<override>()<suspends> : void =
         if:
             FirstPlayer := Self.GetPlayspace().GetPlayers()[0]
             PlayerUI := GetPlayerUI[player[FirstPlayer]]
         then:
             set CountdownTimer = countdown_timer{MaybePlayerUI := option{PlayerUI}, RemainingTime := InitialCountdownTime}
             CountdownTimer.StartCountdown()
         else:
             Print("Can't find player")
using { /Verse.org/Simulation } 

# Verse.orgのSimulationを使用することを宣言します(インポート)。

using { /Fortnite.com/Devices } 

# Fortnite.comのDevicesを使用することを宣言します(インポート)。

countdown_timer_example := class(creative_device): 

# countdown_timer_exampleクラスを作成し、creative_deviceクラスを継承します。

@editable
AddMoreTimeButton : button_device = button_device{}  

# アクセス可能(編集可能)なプロパティで、button_device型のAddMoreTimeButton変数を宣言し、button_deviceのインスタンスを生成して代入します。

@editable
EndGame : end_game_device = end_game_device{}  

# アクセス可能(編集可能)なプロパティで、end_game_device型のEndGame変数を宣言し、end_game_deviceのインスタンスを生成して代入します。

var CountdownTimer : countdown_timer = countdown_timer{}  

# countdown_timer型のCountdownTimer変数を宣言し、countdown_timerのインスタンスを生成して代入します。

InitialCountdownTime : float = 30.0  

# 初期のカウントダウン時間を表す浮動小数点数のInitialCountdownTime変数を宣言し、30.0で初期化します。

OnBegin<override>()<suspends> : void =  

# オーバーライドされたOnBegin関数を定義します。実行中断を可能にする<maintains>フラグが指定されています。戻り値の型はvoidです。

    if:  

# もし以下の条件がtrueの場合、次のブロック内のコードが実行されます。

        FirstPlayer := Self.GetPlayspace().GetPlayers()[0]  

# FirstPlayerという変数に、Self(countdown_timer_exampleのインスタンス自体)が所属するプレイスペース(Playspace)のプレイヤーを取得して代入します。

        PlayerUI := GetPlayerUI[player[FirstPlayer]]  

# PlayerUIという変数に、FirstPlayerに関連するプレイヤーUI(User Interface)を取得して代入します。

    then:  

# 前の条件がtrueの場合に実行されるブロックです。

        set CountdownTimer = countdown_timer{MaybePlayerUI := option{PlayerUI}, RemainingTime := InitialCountdownTime}  

# CountdownTimer変数に、countdown_timerのインスタンスを生成し、MaybePlayerUIとRemainingTimeのパラメーターにそれぞれPlayerUIとInitialCountdownTimeを指定して代入します。

        CountdownTimer.StartCountdown()  

# CountdownTimerのStartCountdown関数を呼び出してカウントダウンを開始します。

    else:  

# 前の条件がfalseの場合に実行されるブロックです。

        Print("Can't find player")  

# メッセージ "Can't find player" を表示します。

creative_deviceについて

@editable AddMore~float = 30.0 までの詳細

button_deviceクラスの詳細

end_game_deviceクラスの詳細

OnBegin() : void =~Print("Can't find player")までの詳細

PlayerUI := GetPlayerUI[player[FirstPlayer]]の詳細

GetPlayerUIの詳細

FirstPlayer := Self.GetPlayspace().GetPlayers()[0]のSelfの詳細

【重要】:PlayerUI := GetPlayerUI[player[FirstPlayer]]のマップについて徹底解説

thenブロックの詳細

set Countd~downTime}の詳細

CountdownTimer.StartCountdown()の詳細

else: Print("Can't find player")の詳細

UIに残り時間が表示されるための関数

▼ このコードは、カウントダウンタイマーの開始時に UI(ユーザーインターフェース)を更新して、画面に残り時間を表示するための関数を提供しています。

以下にコードの解説を行います。

 StartCountdown() : void =
     Print("Starting countdown")

     if (PlayerUI := MaybePlayerUI?):
         PlayerUI.AddWidget(Canvas)
            
         # タイマーの開始時に UI を更新して、画面に RemainingTime の初期値を表示します
         UpdateUI()

 UpdateUI() : void =
     if (IntTime := Int[RemainingTime]):
         RemainingTimeWidget.SetText(RemainingTimeText(IntTime))
StartCountdown() : void =
     # カウントダウンの開始メッセージを表示します
     Print("Starting countdown")

     # プレイヤーのUIが存在する場合には、UIにウィジェットを追加します
     if (PlayerUI := MaybePlayerUI?):
         PlayerUI.AddWidget(Canvas)
        
         # UIを更新して、画面に残り時間の初期値を表示します
         UpdateUI()

UpdateUI() : void =
     # 残り時間を整数値に変換します
     if (IntTime := Int[RemainingTime]):
         # RemainingTimeWidgetに整数値をテキストとしてセットします
         RemainingTimeWidget.SetText(RemainingTimeText(IntTime))

if (PlayerUI :~UpdateUI()の詳細

UpdateUI() : void =の詳細

if (IntTime := Int[RemainingTime]):について

Int[RemainingTime]は、RemainingTimeを整数型(整数値)に変換する理由

RemainingTimeWidget.SetText(RemainingTimeText(IntTime))についての詳細

SetText関数について

▼ このコードは、UIの更新頻度を設定するために、TimerTickPeriodという名前の変数を追加する手順です。

 TimerTickPeriod : float = 1.0 
 
 # タイマーの「精度」を表し、ティックの頻度を秒単位で表します。

▼ このコードは、RunCountdown()という名前のsuspend指定子を持つ関数を作成し、カウントダウンの実行とUIの更新を制御するために使用します。

  StartCountdown() : void =
      Print("Starting countdown")

      if (PlayerUI := MaybePlayerUI?):
          PlayerUI.AddWidget(Canvas)
          # タイマーの開始時に UI を更新して、画面に RemainingTime の初期値を表示します
          UpdateUI()

          spawn:
              RunCountdown()

  RunCountdown()<suspend> : void =
      loop:
          Sleep(TimerTickPeriod)
          set RemainingTime -= TimerTickPeriod

          UpdateUI()

          # タイマーの終了
          if (RemainingTime <= 0.0):
              if (PlayerUI := MaybePlayerUI?):
                  PlayerUI.RemoveWidget(Canvas)
              break
StartCountdown() : void =

カウントダウンを開始する関数 'StartCountdown' の定義

Print("Starting countdown")
# Starting countdown というメッセージを表示する

if (PlayerUI := MaybePlayerUI?):
# もしMaybePlayerUIが存在する場合、それを PlayerUI として代入する

    PlayerUI.AddWidget(Canvas)
    # PlayerUI にウィジェット(Canvas)を追加する

    # タイマーの開始時に UI を更新して、画面に RemainingTime の初期値を表示します
    UpdateUI()
    # UI を更新するための関数 UpdateUI を呼び出す

    spawn:
    # 新しい非同期タスクを作成する

        RunCountdown()
        # RunCountdown 関数を実行する

RunCountdown() : void =

バックグラウンドでカウントダウンを実行する RunCountdown 関数の定義

loop:
# 無限ループを開始する

    Sleep(TimerTickPeriod)
    # TimerTickPeriod 分だけ実行を一時停止する

    set RemainingTime -= TimerTickPeriod
    # RemainingTime から TimerTickPeriod を引いて、残り時間を更新する

    UpdateUI()
    # UI を更新するための関数 UpdateUI を呼び出す

    if (RemainingTime <= 0.0):
    # もし残り時間が 0.0 以下になった場合

        if (PlayerUI := MaybePlayerUI?):
        # もし MaybePlayerUI が存在する場合、それを PlayerUI として代入する

            PlayerUI.RemoveWidget(Canvas)
            # PlayerUI からウィジェット(Canvas)を削除する

        break
        # ループから抜ける(カウントダウン終了)

StartCountdown~untdown")の詳細

if (PlayerUI := MaybePlayerUI?):~UpdateUI()までの詳細

AddWidgetについての詳細

UpdateUI()~タイマーの終了までの詳細

減算代入(-=)演算子

set RemainingTime~rTickPeriodまでの詳細

UpdateUI()の詳細

どうしてspawnを実行する必要があるのか。

ループを終了させる

▼ 以下のコードは、残り時間が0以下になった場合に、もし MaybePlayerUI が存在する場合には PlayerUI に代入し、PlayerUI から特定のウィジェットを削除してからループを終了するためのコードです。

    if (RemainingTime <= 0.0):
    # もし残り時間が 0.0 以下になった場合

        if (PlayerUI := MaybePlayerUI?):
        # もし MaybePlayerUI が存在する場合、それを PlayerUI として代入する

            PlayerUI.RemoveWidget(Canvas)
            # PlayerUI からウィジェット(Canvas)を削除する

        break
        # ループから抜ける(カウントダウン終了)

以下(<=)演算子

if (PlayerUI := MaybePlayerUI?):が必要な理由

PlayerUI.RemoveWidget(Canvas)についての詳細

RemoveWidget関数についての詳細

breakについての詳細

さらに時間を表示させる

さらに時間を表示させる

このカウントダウン タイマーにさらに時間を追加し、追加した時間をコールアウトとして表示するカスタム仕様の方法を追加したいと思います。

この例では、カウントダウンにさらに時間を追加する方法と、プレイヤーが ボタン の仕掛けとやり取りした際に、追加時間を表示する方法を示します。

公式ドキュメント

次の手順に従って、プレイヤーがボタンの仕掛けとインタラクトしたときにカウントダウン タイマーにさらに時間を追加します。

カウントダウンタイマーに時間を追加する

▼ 「AddRemainingTime」という名前の新しい関数は、カウントダウンタイマーにさらに時間を追加するための関数です。

この関数は以下の手順に従って動作します:

 AddRemainingTime(Time : float) : void =
     set RemainingTime += Time

     # 時間が追加された際に UI を即座に更新して、より優れたプレイヤー フィードバックを実現します。
     UpdateUI()
# 残り時間に指定された時間を追加するための関数
 AddRemainingTime(Time : float) : void =
     set RemainingTime += Time

     # 時間が追加された際に UI を即座に更新して、より優れたプレイヤー フィードバックを実現します。
     UpdateUI()

加算代入演算子についての詳細

UpdateUI()関数:UIを更新するための関数

InteractedWithEventをサブスクライブし、AddRemainingTime() を呼び出す

▼ 「countdown_timer_example.verse」内でボタンの仕掛けの InteractedWithEvent をサブスクライブし、プレイヤーがボタンの仕掛けとやり取りした際に AddRemainingTime() を呼び出します。

カウントダウンタイマーの例を示しています。デバイスが起動し、ボタンが押されるとカウントダウンが始まります。ボタンが押されるたびに指定された時間がカウントダウンに追加されます。また、最初のプレイヤーが見つかった場合にのみカウントダウンが開始されます。

 using { /Verse.org/Simulation }
 using { /Fortnite.com/Devices }

 countdown_timer_example := class(creative_device):

     @editable
     AddMoreTimeButton : button_device = button_device{}

     @editable
     EndGame : end_game_device = end_game_device{}

     var CountdownTimer : countdown_timer = countdown_timer{}
     InitialCountdownTime : float = 30.0

     OnBegin<override>()<suspends> : void =
         AddMoreTimeButton.InteractedWithEvent.Subscribe(OnButtonInteractedWith)

         if:
             FirstPlayer := Self.GetPlayspace().GetPlayers()[0]
             PlayerUI := GetPlayerUI[player[FirstPlayer]]
         then:
             set CountdownTimer = countdown_timer{MaybePlayerUI := option{PlayerUI}, RemainingTime := InitialCountdownTime}
             CountdownTimer.StartCountdown()
         else:
             Print("Can't find player")

     OnButtonInteractedWith(Agent : agent) : void =
         TimeToAdd : float = 20.0
         CountdownTimer.AddRemainingTime(TimeToAdd)
# カウントダウンタイマーの例を示すコード

using { /Verse.org/Simulation }  
# Verse.org.Simulation モジュールを使用する
using { /Fortnite.com/Devices }  
# Fortnite.com.Devices モジュールを使用する

countdown_timer_example := class(creative_device):  
# creative_device クラスを継承した countdown_timer_example クラスを定義する

    @editable
    AddMoreTimeButton : button_device = button_device{}  
# 編集可能なプロパティとして AddMoreTimeButton ボタンデバイスを定義する

    @editable
    EndGame : end_game_device = end_game_device{}  
# 編集可能なプロパティとして EndGame 終了ゲームデバイスを定義する

    var CountdownTimer : countdown_timer = countdown_timer{}  
# カウントダウンタイマーのインスタンス CountdownTimer を定義する
    InitialCountdownTime : float = 30.0  
# 初期のカウントダウン時間を定義する

    OnBegin<override>()<suspends> : void =  
# デバイスが始動した際に実行されるメソッド OnBegin を定義する
        AddMoreTimeButton.InteractedWithEvent.Subscribe(OnButtonInteractedWith)  
# AddMoreTimeButton ボタンが押されたときに OnButtonInteractedWith メソッドを呼び出すイベントをサブスクライブする

        if:  
# 条件文の開始
            FirstPlayer := Self.GetPlayspace().GetPlayers()[0]  
# 最初のプレイヤーを取得する
            PlayerUI := GetPlayerUI[player[FirstPlayer]]  
# プレイヤーのUIを取得する
        then:  
# 条件が真の場合の処理
            set CountdownTimer = countdown_timer{MaybePlayerUI := option{PlayerUI}, RemainingTime := InitialCountdownTime}  
# カウントダウンタイマーを準備し初期カウントダウン時間を設定する
            CountdownTimer.StartCountdown()  
# カウントダウンを開始する
        else:  
# 条件が偽の場合の処理
            Print("Can't find player")  
# "Can't find player" というメッセージを表示する

    OnButtonInteractedWith(Agent : agent) : void =  
# ボタンが押されたときに実行されるメソッド OnButtonInteractedWith を定義する
        TimeToAdd : float = 20.0  
# 追加する時間を定義する
        CountdownTimer.AddRemainingTime(TimeToAdd)  
# 追加する時間をカウントダウンタイマーに追加する

AddMoreTimeButton.InteractedWithEvent.Subscribe(OnButtonInteractedWith)の詳細

OnButtonInteractedWith(Agent : agent) : void =についての詳細

AddRemainingTimeメソッドの詳細

追加時間のコールアウト

AddedTimeWidget : text_block = text_block{DefaultTextColor := NamedColors.White} は、カウントダウンタイマーに追加される時間を表示するためのテキストウィジェットを定義しています。

 AddedTimeWidget : text_block = text_block{DefaultTextColor := NamedColors.White} 
 AddedTimeText<localizes>(AddedTime : int) : message = " +{AddedTime}!"
# ウィジェットのテキストブロックを設定する
 AddedTimeWidget : text_block = text_block{DefaultTextColor := NamedColors.White} 
# AddedTimeText関数を定義し、メッセージを生成する
 AddedTimeText<localizes>(AddedTime : int) : message = " +{AddedTime}!"

text_blockについての詳細

NamedColorsの詳細

AddedTimeWidget : text_block = text_block{DefaultTextColor := NamedColors.White}の詳細

text_block{}の役割

AddedTimeText<localizes>(AddedTime: int): message = " +{AddedTime}!"の詳細

localizesの詳細

messageの詳細

【重要】AddedTimeWidgetとAddedTimeTextに関する詳細まとめ

プレースホルダーの詳細

続きは以下の記事にて解説しています。

>> カスタム仕様のカウントダウンタイマー(2)

カスタム仕様のカウントダウンタイマー
【UEFN】カスタム仕様のカウントダウンタイマー(2)【Verse】

続きを見る

よくある質問

カスタム仕様のカウントダウンタイマーの作成に関するよくある質問をまとめてみました。

上記をクリックすると該当箇所にジャンプします。

ウィジェットとは

ウィジェットとパラメータの違い

変数と関数の違いは?

クラスのインスタンスとは?

.の意味は?

クラスを継承するの意味

モジュールとは

「=」と「:=」の違いは?

定数は型を省略できて、変数はできない理由は何ですか?

プロパティの概要と種類を教えて!

変数か関数かを見分けるポイントはある?

パラメータと引数の違いはなに?

パラメータとプロパティの違いは?

配列の長さ Lengthとは?

まとめ

UEFN Verse カウントダウンタイマー

今回は、カスタム仕様のカウントダウンタイマーを解説しました。

続きは以下のサイトにて解説していますので、参考にしてください。

>> 【UEFN】カスタム仕様のカウントダウンタイマー(2)【Verse】

カスタム仕様のカウントダウンタイマー
【UEFN】カスタム仕様のカウントダウンタイマー(2)【Verse】

続きを見る

本日もお疲れさまでした🍵

  • この記事を書いた人
  • 最新記事

あすか(Asuka)

自己紹介:UEFNクリエイター兼ブロガー
Verse言語独学中 | UE・プログラミング・3Dモデリング完全初心者 | 備忘録として学習記録をブログに残しています。
■好きな言葉
徳は弧ならず必ず隣あり.
■ひとこと
まだまだ未熟者ですが、
よろしくお願いします。

-UEFN, Verse言語, メタバース
-, ,