UnityユーザーのためのUEブループリント入門
コードとビジュアル両方のスクリプトを比較してゲームエンジンを学びます

6. プログラムの実行順序

Unityはスクリプトを書き、UEブループリントはノードをつなげていきますが、両者を比較しながら確認すると、実は共に初期の動作とフレーム毎の動作を定義する点で共通していることがわかります。
  • StartとUpdate
  • メソッドの位置による実行順
  • スクリプトが複数ある時のStartとUpdate
  • スクリプトの有効化・無効化

6. Unityのプログラムの実行順序

6.1 StartとUpdate

Startは1度だけ呼ばれます。Updateは毎フレーム呼ばれます。
void Start(){
    Debug.Log("スタート");
}
void Update(){
    Debug.Log("アップデート");
}
Cubeを動かす場合はvoid Update()が毎フレーム呼ばれることでCubeを右に移動させています。
void Start(){

}
void Update(){
    transform.position += Vector3.right;
}

6.2 メソッドの位置による実行順

StartメソッドとUpdateメソッドを入れ替えても同じ動きをするので、書く順番は実行順序と関係がありません。
void Update(){
    Debug.Log("アップデート");
}
void Start(){
    Debug.Log("スタート");
}
メソッド内は上から下へ実行します。
void Start(){
    Debug.Log("あ");
    Debug.Log("い");
    Debug.Log("う");
    Debug.Log("え");
    Debug.Log("お");
}
void Update(){
}

6.3 スクリプトが複数ある時のStartとUpdate

スクリプトが複数ある場合について、スクリプトが二つある場合を例に試します。
void Start(){
    Debug.Log("1のスタート");
}
void Update(){
    Debug.Log("1のアップデート");
}
void Start(){
    Debug.Log("2のスタート");
}
void Update(){
    Debug.Log("2のアップデート");
}
複数のスクリプトがある場合、同じタイミングで呼ばれるメソッドはどういう順で呼ばれるかはわかりません。ゲームオブジェクトが非アクティブだとStartとUpdateは呼ばれません。再生途中でアクティブにするとスクリプトが実行されます。

6. UEブループリントのプログラムの実行順序

6.1 BeginとTick

Beginイベントノードは1度だけ呼ばれます。Tickイベントノードは毎フレーム呼ばれます。
Cubeを動かす場合はTickイベントノードが毎フレーム呼ばれることでCubeを右に移動させています。
🔗 参考リンク
ヒストリア
[UE4]Tickの下にあるFloat型について(Delta Seconds)
(UE極める本P225)

🔗 参考リンク
Qiita
【UE4】UE4側でのフレームレートを操作する手法

6.2 メソッドの位置による実行順(ピンとワイヤー)

ノードのピン

UE BPは複数のノードの間に実行ピン同士を実行ワイヤーで結ばれたとき、実行順序が作成されます。まずはピンについて説明します。ピンには実行ピンとデータピンがあります。

実行ピン

実行ピンは、実行フローを作成するためにノードをまとめてつなぐものです。入力実行ピンがアクティベートされるとノードは実行されます。ノードの実行が完了すると、出力実行ピンがアクティベートされて実行フローが継続します。実行ピンはワイヤー接続がされていない時はアウトラインのみが表示され、別の実行ピンへワイヤー接続がされているときは色付きで表示されます。関数は 1 つの入り口とそれに対応する 1 つの出口を持つため、Function Call ノードには常に 1 つの入力実行ピンと 1 つの出力実行ピンしか存在しません。複数の入出力実行ピンがあるタイプのノードは、アクティベートされたピンに基づいていろいろな動作が可能になります。

データピン

データピン は、ノードへのデータの取り込み、およびノードからのデータ出力に使用します。データピンはタイプ固有で、同一タイプの変数 (独自のデータピンを保有) や別ノードの同一タイプのデータピンへ接続することができます。実行ピン同様に、ワイヤー接続がされていない時はアウトラインのみが表示され、別の実行ピンへワイヤー接続がされているときは色付きで表示されます。

ノードとノードを繋ぐワイヤーの種類と意味

実行ワイヤー

実行ピンの間のワイヤーは実行フローを表します。実行ワイヤーは、出力実行ピンから入力実行ピンへ繋がる白い矢印で表示されます。矢印の方向は実行フローを表しています。

データワイヤー

データワイヤーは、あるデータピンを同一タイプの別のデータピンへ接続します。色付けされた矢印で表示され、データ転送の可視化に使用されます。矢印の方向はデータが移動している方向を示しています。データワイヤの色は、データピンのようにデータタイプによって異なります。
Event BeginイベントとEvent Tickイベントを入れ替えても同じ動きをするので書く順番は実行順序と関係がありません。
🔗 参考リンク
Unreal Engineデベロッパードキュメンテーション
ノード

6.3 アクタが複数ある時のBeginイベントノードとTickイベントノード

Unityのようにコンポーネントを二つ用意してStartとUpdateの振る舞いをUE BPで確認するには、同じようにアクタコンポーネントを二つ作成して、一つのアクタに追加します。
アクタコンポーネントを作成します。
1というアクタコンポーネントをつくります。
1をダブルクリックしてブループリントを開いて以下のノードを作成します。
2というアクタコンポーネントをつくります。
2をダブルクリックしてブループリントを開いて以下のノードを作成します。
新規にアクタを作成します。名前は適当に4-6としておきます。
4-6のアクタに作成したアクタコンポーネントを追加して、コンパイル、保存します。
4-6をレベル上に置きます。
playを実行して1のアクタコンポーネントの実行結果と2のアクタコンポーネントの実行結果が表示されていることがわかります。