構造体とは
公式ドキュメントではこのように説明されています。
Struct (構造体) は structure の略で、関連する複数の 変数 をグループ化する方法の 1 つです。さまざまま 型をはじめとする変数は、すべてグループ化することができます。
https://dev.epicgames.com/documentation/ja-jp/uefn/struct-in-verse
構造体は型の一種であるということに注意が必要です。
構造体の使い方である
定義の仕方
構造体の定義の構文は以下のようになります。
インスタンス化の方法
インスタンス化の構文は以下はのようになります。
アクセス方法
アクセスの構文は以下のようになります。
具体例
構造体は自分で定義する事もできますが、公式が既に定義しているものもあります。
その中でよく使われるvector3という構造体で説明します。
コードの全体↓
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using {/UnrealEngine.com/Temporary/SpatialMath }
using { /Fortnite.com/Characters }
hello_world2_device := class(creative_device):
@editable MovingDiatanceX : float = 2000.0
@editable MovingDiatanceY : float = 0.0
@editable MovingDiatanceZ : float = 2000.0
OnBegin<override>()<suspends>:void=
MovingDiatance:vector3=vector3{X:=MovingDiatanceX, Y:=MovingDiatanceY, Z:=MovingDiatanceZ}
Players : []player = GetPlayspace().GetPlayers()
if(Player : player = Players[0]):
if(FortniteCharacter : fort_character = Player.GetFortCharacter[]):
PlayerPosition : vector3 = FortniteCharacter.GetTransform().Translation
NewPositionX : float = PlayerPosition.X
NewPositionY : float = PlayerPosition.Y
NewPositionZ : float = PlayerPosition.Z
NewPosition:vector3 = vector3{X:=NewPositionX, Y:=NewPositionY, Z:=NewPositionZ} + MovingDiatance
NewRotation: rotation = MakeRotationFromYawPitchRollDegrees(0.0, 0.0, 0.0)
if(FortniteCharacter.TeleportTo[NewPosition, NewRotation]):
Print("Jump!")
ゲーム開始時にプレイヤーをX方向に2000、Z方向に2000移動させるコードです。
定義
vector3<native><public> := struct<concrete><computes>:
@editable
X<native><public>:float = external {}
@editable
Y<native><public>:float = external {}
@editable
Z<native><public>:float = external {}
構造体名⇒vector3
変数名⇒X,Y,Z
これは、公式が定義しており、VScodeのUnrealEngineファイルのUnrealEngine.digest.verseの742行目に書いてあります。
インスタンス化
①13行目
MovingDiatance : vector3 =vector3{X:=MovingDiatanceX, Y:=MovingDiatanceY, Z:=MovingDiatanceZ}
②17行目
PlayerPosition : vector3 = FortniteCharacter.GetTransform().Translation
③21行目
NewPosition:vector3 = vector3{X:=NewPositionX, Y:=NewPositionY, Z:=NewPositionZ} + MovingDiatance
の3つの部分で行われています。
インスタンス名
①MovingDiatance
②PlayerPosition
③NewPosition
値
①MovingDiatanceX…
②GetTransform()とTranslationの2つのメソッドによりvector3型の値が返っている。値はFortnightChracterの位置
③NewPositionX…
アクセス
③NewPositionX : float = PlayerPosition.X
NewPositionY : float = PlayerPosition.Y
NewPositionZ : float = PlayerPosition.Z
①②に対するアクセスはありません。
まとめ
・構造体は変数をグループ化するもの
・構文に従って、定義、インスタンス化、アクセスをする。
・構造体の中には公式が既に定義しているものがある。
・vector3を使う機会が多い。
コメント
コメント一覧 (2件)
いつもわかりやすい記事を投稿してくださり、ありがとうございます!他の投稿者様よりも見やすく、わかりやすくて愛用させていただいております。
さっそくですが、もし可能であれば、「ボタンを押したらプレイヤーの位置から前方グリッド1024(プレイヤーから見て前のマス縦方向2つ分,横方向3つ分、計前方6マス)のエリア内の建築を破壊する」といった仕組みを作ることは可能でしょうか?起爆のボタンは信号リモコンを使用する感じです。実現したいのはマップコード「2898-7886-8847」の手のマークのスキル(GROUND SMASH)です。わがまま言って申し訳ないのですが、可能であればお願いしたいです。よろしくお願いいたします。
いつも見ていただきありがとうございます!
コード考えてみます!