verseのお作法 ~条件式を知ろう~

①はじめに

verseで変数の扱いや、演算の取り扱いを理解していることを前提としてお話をします。まだそのあたりを確認できていない場合はこちらから確認してみてください。

クリエナビ - UEFNにはじめてふれ...
Verse入門 - クリエナビ Verse入門レベルアップしながらVerseを学ぼう
②実行する順番を変更する

ここまでverseをさわってきて、基本的に上の行から順番に1行ずつ処理が実行されることに気付いたと思います。

例えば、以下のスクリプトではPrint(“{Add}”)が実行されてから、Print(“{Add3}”)が実行されるわけです。

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

hello_world_device := class(creative_device):

    #変数を定義します。
    #@editableとつけるとUEFNで変数の数値を変更できます。
    @editable
    var Add : int = 0

    var Add2 : int = 5

    @editable
    var Add3 : float = 0.0

    var Add4 : float = 6.0

    OnBegin<override>()<suspends>:void=
        #int型のたし算が可能
        set Add = Add + Add2
        #上記を省略して書くと以下のようになる。 
        #set Add += Add2
        Print("{Add}")

        #float型のわり算が可能
        set Add3 = Add3 + Add4
        #上記を省略して書くと以下のようになる。
        #set Add3 += Add4
        Print("{Add3}")

実行する順番を変更することは可能なのでしょうか。以下のように考えてみます。

・変数Addが10より小さい整数であれば、通常通りPrint(“{Add}”)を実行し、Print(“{Add3}”)を実行します。

・変数Addが10より大きい整数であれば、まずはPrint(“{Add3}”)を実行し、その後Print(“{Add}”)を実行します。

実は、実行する順番をコントロールすることが可能なのです。

③if

ここまでのお話を整理するとこうなります。これをスクリプトにしてみます。

まずは値を比較する方法を学習します。

つまり、Aが10より大きいと書きたければ、A > 10。Aが10より小さいと書きたければ、A < 10と書きます。

続いて、if式というものを使い、条件が分岐していく部分を書いてみます。

        if(Add > 10):
            Print("{Add}")
            Print("{Add3}")
        else:
            Print("{Add3}")
            Print("{Add}")

if部分で、Addが10より大きければ、Print(“{Add}”)を実行し、Print(“{Add3}”)を実行します。

else部分で、Addが10より大きくなければ、つまり10より小さければ、Print(“{Add3}”)を実行し、Print(“{Add}”)を実行します。

以下のスクリプトをコピー&ペーストしてください。UEFNでAddの値を変更しながら(@editableのため編集可能です)、セッションを開始して効果をたしかめてください。狙い通りの効果となっているはずです。

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

hello_world_device := class(creative_device):

    #変数を定義しています。
    #@editableとつけるとUEFNで変数の数値を変更できます。
    @editable
    var Add : int = 0

    var Add2 : int = 5

    @editable
    var Add3 : float = 0.0

    var Add4 : float = 6.0

    OnBegin<override>()<suspends>:void=
        
        #if式をつかい条件を分岐させます。
        #Addが10より大きいとき
        if(Add > 10):
            set Add = Add + Add2
            Print("{Add}")
            Print("{Add3}")
        #Addが10より小さいとき
        else:
            set Add3 = Add3 + Add4
            Print("{Add3}")
            Print("{Add}")

if式の書き方を整理すると、以下のようになります。

if(条件1):
   処理1
else(条件2):
   処理2
④条件式

if式のようなものを条件式と呼びます。

条件式には仲間がたくさんいて、loop式やfor式などがいます。

最後にこれらをチェックしていきます。

⑤loop

同じような処理を繰り返すことができます。

以下のスクリプトをコピー&ペーストしてください。セッションを開始して確認してみてください。

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

hello_world_device := class(creative_device):

    #変数を定義しています。
    #@editableとつけるとUEFNで変数の数値を変更できます。
    @editable
    var Add : int = 0

    var Add2 : int = 5

    @editable
    var Add3 : float = 0.0

    var Add4 : float = 6.0

    OnBegin<override>()<suspends>:void=
        
        #loop式をつかいます。
        loop:
            set Add += 1
            Print("{Add}")
            if(Add=20):
                break

以下のスクリプト部分に注目します。

        loop:
            set Add += 1
            Print("{Add}")
            if(Add=20):
                break

まず変数Addに+1しています。その結果を画面表示します。この作業を繰り返していきますが、Addが20になった時点で作業を終了しますが、breakと書きます。

breakがなければ永遠に作業をくりかえしてしまい、ほかのコードに悪影響をおよぼしてしまうため、基本的にはbreakするように注意してください。(状況によってはbreakがないほうが良いときもあります)

loop式の書き方を整理すると、以下のようになります。

loop:
   ループ処理1
   (状況に応じてbreak)
⑥for式

あらかじめ処理する回数をきめて実行する処理のことです。loopにすこし似ていますね。

以下のスクリプトをコピー&ペーストして、セッションを確認してください。

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

hello_world_device := class(creative_device):

    #変数を定義しています。
    #@editableとつけるとUEFNで変数の数値を変更できます。
    @editable
    var Add : int = 0

    var Add2 : int = 5

    @editable
    var Add3 : float = 0.0

    var Add4 : float = 6.0

    OnBegin<override>()<suspends>:void=
        
        #for式をつかいます。
        for(num := 0..10):
            set Add += num
            Print("{Add}")
        

for式の書き方を整理すると、以下のようになります。

for (変数名 := [開始の値]..[終了の値]):
   ループ処理
⑦まとめ

いかがでしたでしょうか。

ifやloopなどは、これからverseのなかでたくさん出会うと思います。

実はそれぞれいろいろな記述方法があるのですが、今回お話したことが基本となるので読み解くことが簡単にできると思います。

ぜひ試しにif式など使ってみてください。

お疲れさまでした。

⑧参考動画

クリエナビではYouTubeチャンネルも運営しています。

チャンネルの中から厳選した動画をご紹介します。

今回学習した条件式に関する動画です。

良ければチェックしてみてください。

ご質問やご感想はお気軽にコメント欄まで!

コメントする