Construction Script とは
Construction Script はアクターがインスタンス化された際に、一度だけ実行されるスクリプトです。
Event Graph の Begin Play はゲームを再生しないとスクリプトは実行されませんが、Construction Script はエディターに配置した状態で実行されるので、ブループリント内で配置したメッシュをレベルエディタ上で確認できるという違いがあります。
Construction Script を利用して、手軽にプロシージャルなレベル作成が行なえます。
今回はシンプルなメッシュを並べるブループリントアクターを作成してみます。
ブループリント作成手順
ブループリントクラスを作成し、コンポーネントを追加する
Instanced Static Mesh コンポーネント を追加します。
メッシュを設定する
Instanced Static Mesh コンポーネント にメッシュを設定します。
今回はスターターコンテンツに入っている SM_Chair を設定しています。
Construction Script にノードを定義する
変数
- NumInstances: Integer
- InstanceMargin: Vector
追加した変数の右端にある目のマークをクリックするか、詳細パネルのインスタンス編集可能(InstanceEditable) にチェックを入れて、アクターの詳細パネルに変数をエクスポートします。
このブループリントは、0 ~ NumInstances
回 index の値を +1
しつつ、InstanceMargin * index
をポジションとして、InstancedStaticMesh をコンポーネントに追加します。
レベルに配置する
作成したブループリントをレベルに配置し、詳細パネルの デフォルト タブから、エクスポートしたパラメータを入力すると、InstanceMargin の方向に NumInstance 分のイスが配置される。
基本的にブループリントで出来ることは Construction Script でも出来るので作り方次第で色々できる。
並べたり
ブループリント
螺旋状にしたり
ブループリント
Instanced Static Mesh について
Instanced Static Mesh は同じメッシュを 1 DrawCall で出力する。
レベルビューで Static Mesh をコピーして配置した場合、コピーした分だけ DrawCall が増える。
DrawCall はコンソールコマンド Stat SceneRendering
で確認できます。
Stat SceneRendering で表示される Mesh draw calls と Static list draw calls の違いはよく分かりません。
Static Mesh で並べてみた
Static Mesh でイスを4つ並べてみました。
デフォルトレベルは、何も置かない状態で DrawCall = 4
なので、イスの DrawCall は 2
となります。
イス4つ分の DrawCall = 8
が積まれていることが分かります。
Instanced Static Mesh で大量に並べてみた
まとめ
Construction Script と Instanced Static Mesh を積極的に使っていきましょう。