![見出し画像](https://assets.st-note.com/production/uploads/images/70080678/rectangle_large_type_2_e2999b816b7ea9ef87462f0cac4be98f.jpeg?width=1200)
UE5 C++&BP 05【Blueprint版】Construction ScriptでComponentの設定を変更する
本を書くという目標が決まったので、頭の中にある本の目次を書き起こしました。
Zennのロードマップがユーザーとのやり取りされている素晴らしいロードマップです。
Ziraで看板方式でタスク管理をしていたのですが、Zenn公式の運用方法を取り入れてみようとGitHubのProjectで管理してみることにしました。
書いてみると
結構多いかな?
これを終わらせればいいのなら意外といけるそう
これも足りないから書かなきゃ
自分の考えていることは書いてみないと、自分にも他人にも分からないので書いてみることで見えてくるものがあります。
近道はない
そんなことを書きましたが、目的地が決まれば着実にタスクをひとつひとつ終わらせることが近道ですね。
誘惑が多いので寄り道ばっかりです。
寄り道はインプット
栄養補給大事です。
Dr.Stoneみたいにロードマップを作った
— ポジTA (@posita33) January 15, 2022
完成までの道のりが分かる
ひとつひとつ完成させていけば、出来上がる
近道はない
次のIssueに取り掛かろう pic.twitter.com/UfReYBqp5u
前回は「Componentを追加する」方法について調査しました。
今回は「Construction ScriptでComponentの設定を変更する」方法について調査していきます。
【Blueprint版】Construction ScriptでComponentの設定を変更する
今回出来ること
今回はConstructionScriptを使用して、Level EditorのDetailパネルでPointLightのプロパティを変更します。
![](https://assets.st-note.com/img/1642324145153-wuNUiJbTaO.png?width=1200)
学習用の新規レベル「Chapter_2_6_ConstructionScript」を作成する
学習用の新規レベルを作成します。
[File]から[New Level…]を選択します。
![](https://assets.st-note.com/img/1642284458311-iB9iAyxft5.png)
[Default]を選択します。
![](https://assets.st-note.com/img/1642284469547-hZqaqNPz0I.png)
「Maps」フォルダに「Chapter_2_6_ConstructionScript」を入力し、[Save]ボタンをクリックします。
![](https://assets.st-note.com/img/1642284582408-5fJ3792ez7.png?width=1200)
LevelEditorで編集可能な変数を追加する
PointLightのプロパティをBlueprintのConstructionScriptから変更するための変数を作成します。
VariableName:VariableType(変数の概要)
IsVisible:Boolean (PointLightの表示(true)/非表示(false))
Intensity:Float(PointLightの光の強さ)
LightColor:Linear Color Structure
![](https://assets.st-note.com/img/1642286753465-B19VdJBDRz.png)
追加した変数にCategoryを設定します。
Category:Point Light
![](https://assets.st-note.com/img/1642286957633-yK7ePdj5XR.png?width=1200)
変数[IsVisible]の右側「目のアイコン」をクリックし、「目が開いた状態」に設定します。
![](https://assets.st-note.com/img/1642287122237-cRcN6IIZAa.png?width=1200)
変数[Intensity]は[Detail]パネルの[Instance Editable]をチェックします。
変数[Intensity]の「目のアイコン」が「目を開いた」状態になります。
「目のアイコン」は[Instance Editable]が有効/無効を表しています。
![](https://assets.st-note.com/img/1642287306774-4Fmd7L4W71.png?width=1200)
変数[LightColor]の「目のアイコン」を開いた状態にします。
すべての変数の目が開いた状態になりました。
![](https://assets.st-note.com/img/1642287397079-ITMu8UgJ90.png?width=1200)
[Compile]ボタンをクリックします。
![](https://assets.st-note.com/img/1642287435439-Vq4QLx9e6Q.png)
LevelEditorに戻り、「BP_SampleActor」をViewportにDrag&Dropします。
![](https://assets.st-note.com/img/1642287506115-3xQfF1tBQs.png?width=1200)
「BP_SampleActor」の[Detail]パネルに「Point Light」と書かれたCategoryが表示されます。
先ほど追加した変数が表示されています。
変数の「目のアイコン」が開いた状態では、LevelEditorの[Detail]パネルから変数の値を設定することができます。
![](https://assets.st-note.com/img/1642287649322-uNdcPs8AWc.png?width=1200)
ConstructionScriptでPointLightの表示/表示を設定する
[Derail]パネルに表示された変数を使用して、Point Lightのプロパティを変更できるようにします。
「BP_SampleActor」をBlueprintEditorで開きます。
![](https://assets.st-note.com/img/1642287772836-VJhhs0BhlL.png)
Construction Scriptタブを開きます。
[Construction Script]ノードが今回やることのStartになるノードです。
![](https://assets.st-note.com/img/1642288026398-kkCAr458LH.png?width=1200)
[Component]パネルからPointLightをDrag&Dropします。
![](https://assets.st-note.com/img/1642288090105-POfiLwKW0m.png?width=1200)
PointLightのGetノードからDrag&Dropし、[Set Visibility]を選択します。
![](https://assets.st-note.com/img/1642288707543-EbbD5jC0Gf.png?width=1200)
変数[IsVisible]のGetノードを追加します。
[Set Visibility]ノードの[New Visibility]ピンとGetノードを接続します。
[Construction Script]ノードの実行ピンを[Set Visibility]ノードの実行ピンに接続します。
![](https://assets.st-note.com/img/1642320341280-Q3H8w5sD5c.png?width=1200)
Compileボタンをクリックします。
![](https://assets.st-note.com/img/1642288877989-xWz7SCUzvU.png)
[Detail]パネルの変数[IsVisible]を有効/無効にすることで、Point Lightの表示/非表示を制御することが出来ます。
ConstructionScriptに処理を書くことで、Viewportに配置してからのComponentの設定を変更することができます。
![](https://assets.st-note.com/img/1642289152002-sGa6O1UWVb.png?width=1200)
処理が書けたのでコメントボックスを追加しましょう。
![](https://assets.st-note.com/img/1642289477427-UUbr6LQAxs.png?width=1200)
ConstructionScriptでPointLightのIntensity(光の強さ)を調整をする
次にPointLightのIntensity(光の強さ)を調整します。
Componentの[PointLight]と変数[PointLight]のGetノードを追加します。
![](https://assets.st-note.com/img/1642289680168-WPjFvuq4Fy.png?width=1200)
[PointLight]のGetノードからDrag&Dropし、[Set Intensity]を選択します。
![](https://assets.st-note.com/img/1642289752547-XYDfVwi8EZ.png)
変数[Intensity]のGetノードと[Set Intensity]ノードのNew Intensityピンを接続します。
[Set Visibility]ノードの実行ピンと[Set Intensity]ノードの実行ピンを接続します。
![](https://assets.st-note.com/img/1642289823149-IxrWzPtKkl.png?width=1200)
Compileボタンをクリックします。
![](https://assets.st-note.com/img/1642288877989-xWz7SCUzvU.png)
[Detail]パネルの変数[Intensity]の数値を大きくすると光が強くなります。
![](https://assets.st-note.com/img/1642290008275-toHswpd2RX.png?width=1200)
変数[Intensity]のDefault Valueに数値[5000.0]を設定します
![](https://assets.st-note.com/img/1642290583400-tGqxpM91Xk.png?width=1200)
Compileボタンをクリックします。
![](https://assets.st-note.com/img/1642288877989-xWz7SCUzvU.png)
変数[Intensity]の矢印ボタンをクリックします。
設定した値をDefault Valueに戻ります。
ConstructionScriptで設定できるようにすると最初の状態に戻したい時が出てきます。最初の状態に戻すためにDefault Valueに設定しておきましょう。
![](https://assets.st-note.com/img/1642290744036-WV4bMqZlaP.png)
処理が書けたのでコメントボックスを追加しましょう。
![](https://assets.st-note.com/img/1642298053041-1zslBbXi9v.png?width=1200)
ConstructionScriptでPointLightのLightColorを調整をする
次にPointLightのLightColor(光の色)を調整します。
Componentの[PointLight]と変数[LightColor]のGetノードを追加します。
![](https://assets.st-note.com/img/1642298628672-1Qjl0ZWzu3.png?width=1200)
変数[LightColor]のGetノードからDrag&Dropし、[Set Light Color]を選択します。
![](https://assets.st-note.com/img/1642298746393-cIqCyZdkQu.png)
変数[LightColor]のGetノードと[Set Light Color]ノードのNew Light Colorピンを接続します。
[Set Intensity]ノードの実行ピンと[Set Light Color]ノードの実行ピンを接続します。
![](https://assets.st-note.com/img/1642298867632-IbAFgO8Djy.png?width=1200)
Compileボタンをクリックします。
![](https://assets.st-note.com/img/1642298950952-DKSeQI0x9i.png)
[Detail]パネルの変数[LightColor]を変更することで、PointLightの色を変更することが出来ます。
![](https://assets.st-note.com/img/1642301020567-8vp2R4nRYv.png?width=1200)
処理が書けたのでコメントボックスを追加しましょう。
![](https://assets.st-note.com/img/1642307340414-7YS7rcVHTD.png)
ConstructionScriptの振り返り
変数の目のアイコンを有効にする(Instance Editableを有効にする)とLevelEditorの[Detail]パネルでViewportに配置した後に値を変更できます。
![](https://assets.st-note.com/img/1642308217712-hBVu1apWSm.png?width=1200)
BlueprintのConstructionScriptでは、LevelEditorの[Detail]パネルの変数の変更をViewportに配置したActorに対して反映することができます。
![](https://assets.st-note.com/img/1642307370776-hySCs3yY0Z.png?width=1200)
Web上でBlueprintを共有できるサイトがありますので、今回のBlueprintを共有しています。
[Set Visibility]ノードはPointLightの表示/非表示を設定することができます。
![](https://assets.st-note.com/img/1642308933868-7llJ5jS1FT.png?width=1200)
[Set Intensity]ノードはPointLightの光の強さを設定することができます。
![](https://assets.st-note.com/img/1642309105317-KjMJKzg2Mg.png?width=1200)
[Set Light Color]ノードはPointLightの光の色を設定することができます。
![](https://assets.st-note.com/img/1642309195773-XQwfOJoV1c.png?width=1200)
Actorを親に選択したBlueprintEditorは最初[EventGraph]タブと[ConstructionScript]タブに処理を書くことができます。
EventGraphはPlayが実行されてから、Eventが発生した時に実行されるタブです。
![](https://assets.st-note.com/img/1642308427922-D9a4f6ljOr.png?width=1200)
ConstructionScriptタブはPlayが実行される前に、配置したActorのComponentの設定を確認しながら変更する処理が書けるタブです。
![](https://assets.st-note.com/img/1642308546685-NZUsqzTq9A.png?width=1200)
Playが実行される前か後かで使用方法を考えます。
全て保存して、Blueprint側は終了
Blueprint側の説明はここまでになります。
[Content Browser]から[Save All]ボタンをクリックし、[Save Selected]ボタンをクリックしてプロジェクトの変更のあったアセットをすべて保存します。
![](https://assets.st-note.com/img/1642302882815-ohurRyb37T.png?width=1200)
まとめ
Blueprintを作成した時に3つのタブがあって、ConstructionScriptタブはなかなか使わないのではないでしょうか。
覚えておくと大変便利な機能なので、一度も触ったことが無い人はこの機会に触ってみてください。
それでは、C++側を実装していきましょう。
UE4から始めるC++&Blueprint 進捗とロードマップ
Zennで進捗報告を行い、GitHubでロードマップを公開中です。
良かったら確認してみてください。
【参照URL】