アンリアる! Verse入門編 ~対話形式で学ぶUEFN~
BOOTHでUEFN Verse入門書を販売していますUEFN上でVerseを使って開発するために必要となる基礎知識を一冊の本にまとめた本です。 対話形式によるわかりやすい説明を目指しました。無料の試し読みも可能ですので、ぜひ読んでみてください!
[UEFN] はじめてのVerseプログラミング – 演算子の種類

演算子には、4種類の演算子があります。
説明の中で「失敗」という用語が出てきますが、これは値がないことを示します。
反対に値がある場合は「成功」と呼びます。
「失敗」については、他の記事で詳しく説明します。

  • 比較演算子
    • 2つの変数や値を比較し true を生成するか、「失敗」になります。
  • 条件演算子
    • 「失敗」かそれ以外かで「成功」と「失敗」になります。
  • 算術演算子
    • 変数や値に対して、算術演算や文字列連結できます。
  • クエリ演算子
    • 型が logic の変数が true か否か確認し、false の場合は「失敗」になります。

比較演算子

2つの変数や値を比較し true を生成する(「成功」になる)か、「失敗」になる演算子です。
「失敗」になる可能性があるため、失敗コンテキスト内でのみ使用できます。
失敗コンテキストについては本記事では扱わないため、参考となるソースコードは示しません。

演算子 説明
< 小なり。左辺値が右辺値と比較して小さい場合に「成功」になります。それ以外の場合は「失敗」になります。
<= 以下。左辺値が右辺値と比較して小さい/等しい場合に「成功」になります。それ以外の場合は「失敗」になります。
> 大なり。左辺値が右辺値と比較して大きい場合に 「成功」になります。それ以外の場合は「失敗」になります。
>= 以上。左辺値が右辺値と比較して大きい/等しい場合に「成功」になります。それ以外の場合は「失敗」になります。
<> 不等号。左辺値が右辺値と比較して等しくない場合に「成功」になります。それ以外の場合は「失敗」になります。
= 等号。左辺値が右辺値と比較して等しい場合に「成功」になります。それ以外の場合は「失敗」になります。

条件演算子

「失敗」かそれ以外かにより、「成功」になるか「失敗」になります。
「失敗」になる可能性があるため、失敗コンテキスト内でのみ使用できます。
失敗コンテキストについては本記事では扱わないため、参考となるソースコードは示しません。

演算子 説明
not 否定。式の「成功」と「失敗」を反転させます。
and 論理積。左側の式と右側の式が成功した場合に「成功」となり、それ以外は「失敗」になります。
or 論理和。左側の式もしくは右側の式のどちらかが「成功」した場合に「成功」となり、両方「失敗」した場合に「失敗」になります。

数学演算子

変数や値に対して、算術演算や文字列連結できる演算子です。
演算子が + の場合のみ、文字列をサポートします。
また、演算子 / については int 型と float 型で仕様が異なります。

演算子 説明
+ 加算。左辺値と右辺値を合計した値を生成します。値が文字列の場合は連結した文字列を生成します。
減算。左辺値から右辺値を引いた値を生成します。
* 乗算。左辺値と右辺値を乗算した値を生成します。
/ 除算。左辺値を右辺値で除算した値を生成します。int 型の場合は「失敗」となる場合があり、結果は rational 型の値を生成します。
+= 加算代入。左辺値と右辺値を合計した値を、左辺値に代入します。変数の書きかえとなるため set が必要です。値が文字列の場合は連結した文字列が代入されます。
-= 減算代入。左辺値から右辺値を引いた値を、左辺値に代入します。変数の書きかえとなるため set が必要です。
*= 乗算代入。左辺値と右辺値を乗算した値を、左辺値に代入します。変数の書きかえとなるため set が必要です。
/= 除算代入。左辺値を右辺値で除算した値を、左辺値に代入します。float 型の場合のみ利用可能です。

数学演算子を使ったVerseプログラムの例を示します。

ConstIntVar := 2
ConstFloatVar := -1.5
ConstStringVar := "Hello, "
var IntResult : int = 0
var FloatResult : float = 0.0
var StringResult : string = ""

set IntResult = 3 + 5
Print("IntResult: {IntResult}")   # 「IntResult: 8」が表示される
set IntResult = 3 + ConstIntVar
Print("IntResult: {IntResult}")   # 「IntResult: 5」が表示される
set FloatResult = 2.0 + 3.0
Print("FloatResult: {FloatResult}")   # 「FloatResult: 5.000000」が表示される
set FloatResult += ConstFloatVar
Print("FloatResult: {FloatResult}")   # 「FloatResult: 3.500000」が表示される
set StringResult = "Hello, " + "UEFN!"
Print("StringResult: {StringResult}")   # 「StringResult: Hello, UEFN!」が表示される
set StringResult = ConstStringVar + "Verse Programming!"
Print("StringResult: {StringResult}")   # 「StringResult: Hello, Verse Programming!」が表示される

set IntResult = 3 - 5
Print("IntResult: {IntResult}")   # 「IntResult: -2」が表示される
set IntResult = 3 - ConstIntVar
Print("IntResult: {IntResult}")   # 「IntResult: 1」が表示される
set FloatResult = 2.0 - 3.0
Print("FloatResult: {FloatResult}")   # 「FloatResult: -1.000000」が表示される
set FloatResult -= ConstFloatVar
Print("FloatResult: {FloatResult}")   # 「FloatResult: 0.500000」が表示される

set IntResult = 3 * 5
Print("IntResult: {IntResult}")   # 「IntResult: 15」が表示される
set IntResult = 3 * ConstIntVar
Print("IntResult: {IntResult}")   # 「IntResult: 6」が表示される
set FloatResult = 2.0 * 3.0
Print("FloatResult: {FloatResult}")   # 「FloatResult: 6.000000」が表示される
set FloatResult *= ConstFloatVar
Print("FloatResult: {FloatResult}")   # 「FloatResult: -9.000000」が表示される

set FloatResult = 6.0 / 0.5
Print("FloatResult: {FloatResult}")   # 「FloatResult: 12.000000」が表示される
set FloatResult /= ConstFloatVar
Print("FloatResult: {FloatResult}")   # 「FloatResult: -8.000000」が表示される

このプログラムをクラス output_logs デバイスのメンバ関数 OnBegin に追加して実行したときのログ画面を示します。

演算子の種類

クラス output_logs の作り方については、次の記事を参考にしてください。

[UEFN] はじめてのVerseプログラミング - ログを出力してみよう
はじめてのVerseプログラムとしてログを出力してみましょう。 Print関数を利用することで、プログラムを出力できます。

クエリ演算子

クエリ演算子は、型が logic の変数が true か否か確認し、false の場合は「失敗」となる演算子です。
「失敗」になる可能性があるため、失敗コンテキスト内でのみ使用できます。
失敗コンテキストについては本記事では扱わないため、参考となるソースコードは示しません。

演算子 説明
? クエリ。変数が true 場合に「成功」となり、値として true を返します。false の場合は「失敗」になります。

以上が、演算子の種類です。

その他、UEFNのVerseに関する情報は、以下の記事にまとめています。

[UEFN] はじめてのVerseプログラミング
VerseはEpic Gamesが開発したプログラミング言語で、Fortniteクリエイターが仕掛けをカスタマイズするときに使用できます。 Fortnite用のUnreal Engine(UEFN)で独自のゲームを作成するときに使用できます。 Colory GamesのTech Blogでは、Verseプログラミングに関して一から初心者が学べるように、複数の記事を掲載しています。