forとは
forは公式ドキュメントでこのように説明されています。
for 式は、処理を一定回数反復し、同じ回数、コードブロックの式を繰り返します。
https://dev.epicgames.com/documentation/ja-jp/uefn/for-in-verse
上記の通り、forは回数を指定し、その回数分式を繰り返すことが出来ます。
forの構文
回数の指定に入れることができるのは範囲、配列、マップです。
範囲の例
for (X:=0..3)
Print(”{X}”)
Xの部分は自分で決めます。
以下のコードと同じ意味になります。
この式により4回Printが実行されます。
Print(”0”)
Print(”1”)
Print(”2”)
Print(”3”)
配列の例
値のみ使う場合
for(X: array{1,2,4}):
Print(”{X}”)
配列の場合:の後ろの=はないので注意が必要です。
以下のコードと同じ意味になります。
この式により3回Printが実行されます。
Print(”1”)
Print(”2”)
Print(”4”)
インデックスと値を使う場合
配列のインデックスも使いたい場合、このようになります。
for(X - >Y: array{1,2,4}):
Print(”{X}and{Y}”)
Xにインデックス、Yに値が入ることになります。
以下のコードと同じ意味になります。
この式により以下のように3回Printが実行されます。
Print(”0and1”)
Print(”1and2”)
Print(”2and4”)
マップの例
値のみ使う場合
for (X:map{ 1=>3, 0=>7 }):
Print(”{X}”)
Xにはマップの値の方が入ることになります。
この式により以下のように2回Printが実行されます。
Print(”3”)
Print(”7”)
キーと値どちらも使いたい場合
for (X->Y : map{ 1=>3, 0=>7 }):
Print(”{X}and{Y}”)
Xにキー、Yに値が入ることになります。
マップの場合も配列と同様に:の後ろの=は書きません。
この式により以下のように2回Printが実行されます。
Print(”1and3”)
Print(”0and7”)
具体例
ゲーム開始時に全てのプレイヤーに50ダメージ与えるコードです。
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Fortnite.com/Characters }
hello_world_device := class(creative_device):
var Players : []player = array{}
OnBegin<override>()<suspends>:void=
set Players = GetPlayspace().GetPlayers()
for (Player : Players ,Fort := Player.GetFortCharacter[]):
Fort.Damage(50.0)
コードの解説
13行目でゲーム開始時にゲームにいる全てのプレイヤーのplayer情報を取得しています。
14行目で全てのPlayers配列の要素からfort_character情報を取得し、
それぞれにDamage関数を実行しています。
forの解説
for (Player : Players ,Fort := Player.GetFortCharacter[]):
Fort.Damage(50.0)
指定回数の部分にはPlayers配列が入っています。
全てのPlayers配列の要素に対してコードブロックの式を実行することになります。
また、括弧内にfort := Player.GetFortCharacter[]が入っていますが、forの括弧内は失敗コンテキストであるため、失敗する可能性がある式を入れるために使うこともできます。
そして、コードブロックで全てのプレイヤーにダメージを与えています。
コメント