1.3 - 変数

ブループリントのサンプルレベルの概要、サンプル 1.3:Variables

Choose your operating system:

Windows

macOS

Linux

BPVariablesExample.png

このサンプルでは、2 つのスポットライトが設定されたBlueprint アクタを使用します。各スポットライトの色は 変数 でコントロールされています。プログラミングにおける変数は、あるデータ量を格納するコンピューター メモリ領域として定義されます。ブループリント スクリプトにおける変数は、バーチャル コンテナと全く同じ方法で使用します。コンテナはある種の情報を配置したり、中にある情報をクエリするために使用します。サンプルの各ライトは Linear Color 変数を使用しています。ある特定の色に対して RGB 値を格納しています。この色にデフォルト値を挿入して、さまざまな場所からクエリして使用することができます。新しい色を設定して、設定色をブループリントスクリプトの一部として使用します。

このサンプルでは主に Linear Color 変数を使用していますが、ブループリント スクリプト内ではさまざまな変数を利用することができます。変数の各タイプは種類の異なるデータを保持します。ここで、ユーザーが主要データ型について最低限の基礎知識を身に付けていることが重要となります。変数の使用に関する型のリストや詳細は、 ブループリントの変数のドキュメント を参照してください。

左側のスポットライトは、 パブリック 変数で作成されています。つまり、Blueprint アクタが選択されている間、 [Details (詳細)] パネルで編集が可能です。右側は似たような設定ですが、Linear Color 変数が プライベート のままになっています。つまり、この色の値を変更するには、アクタのブループリント スクリプトを開いて、プライベート変数のデフォルト設定を変更するか、スクリプトの機能の一部としてその他の方法で変更しなくてはいけません。

変数をパブリックにするには、その 編集可能な プロパティをチェックする必要があります。または、 My Blueprint ウィンドウで変数名の横にある目のアイコンをクリックします。変数が編集可能になると、その横の目の形状をしたボタンが黄色でハイライトされます。変数の編集は公開されていますが、ツールヒントがないため、一部のユーザーは混乱するかもしれません。これを解決するために、変数の [Tooltip] プロパティに説明を入力します。入力が終了すると、目の形状をしたボタンは緑表示になります。

初心者ユーザーは、使用している変数を必ずしもパブリックにしないということを留意しておいてください。重要な変数の変更許可を簡単にユーザーに与えてしまうと、破損が生じたり、重要な機能にアラートが生じる可能性があります。アーティストやレベル デザイナーが利用する必要がある変数をパブリック、そしてその他の変数全てを必ずプライベートとします。

パブリック変数に用途を説明するツールヒントがあることを常に確認してください!

コンポーネント

このサンプルでは、完全に独立して動作する 2 つのライトがあるため、この Blueprint アクタのコンポーネントは比較的広範囲に及びます。コンポーネントの大部分は、ラベル付けにいくつかの Text Render コンポーネントを使用した Static Mesh コンポーネントです。当然、エフェクトを完成させるには Spot Light コンポーネントもいくらか使用しなくてはいけません。

LightComponentList.png LightComponentPreview.png

基本的に同じですが、 2 種類の設定方法があります。各ライトのコンポーネント設定方法は以下のとおりです。

それぞれのライト設定に対し、 Public Private というワードはプレフィックスとして名前に追加されることに留意してください。またインデント付けは、コンポーネント リスト内でそうであるように、あるコンポーネントから他のコンポーネントに対し親の関係であることを示すことを意識してください。

  • Wall Mount - 壁に固定されているように見える Static Mesh コンポーネントです。

    • Bracket - 壁掛けにアタッチして Light Fixture (照明器具) を支えているように見える Static Mesh コンポーネントです。

      • Light Fixture - 照明器具自体の Static Mesh コンポーネントです。プレイヤーには、スポットライトのように見えます。2 番目のマテリアル エレメント (エレメント 1) には、ライトの色とマテリアルの色が一致して更新するように作成された、特別なマテリアルが適用されています。

        • Spot Light - エフェクトのイルミネーションを与える Spot Light コンポーネントです。

    • Text - パブリックもしくはプライベートのラベルとして使用する Text Render コンポーネントです。

      • Description - エフェクトを詳しく説明するテキストです。

変数のセットアップ

Blueprint アクタにコンポーネントを追加した時、 [My Blueprint] パネル (Graph モードのように) では、各コンポーネントの変数が自動的に追加されるのが分かります。コンポーネントのデータが必要な場合、またはコンポーネントのデータを設定する場合に、各コンポーネントにアクセスすることができます。この先は、特にこのサンプルのためにセットアップしたいくつかの特別な変数を使用します。

LightVariables.png

エフェクトに対し具体的に作成したカスタム仕様の変数は以下の通りです。

  • PublicColor - 左側にある Public ライトに適用した色を格納する Linear Color 変数です。デフォルト値の緑色をプロパティに設定します。

  • PrivateColor - 右側にある Private ライトに適用した色を格納する Linear Color 変数です。デフォルト値の赤色をプロパティに設定します。

その他に、照明器具のレンズに適用した Dynamic Material Instance (動的マテリアル インスタンス) を保持するために作成した 2 つの変数があります。この変数は上述の変数から色の値を送信するために設定します。Spot Light コンポーネントの色と一致するようにライトのレンズカラーを変更します。

  • PublicLightLensMaterial - Public Light Fixture のレンズの動的マテリアル インスタンスを保持します。

  • PrivateLightLensMaterial - Private Light Fixture レンズの動的マテリアル インスタンスを保持します。

変数の作成

[My Blueprint] パネル内部で全ての変数を手動で作成しなくてはいけないわけではありません。ノードの出入力値を見ると、変数に格納しなくてはいけないことが分かります。適切なデータピンを 右クリック して、コンテキスト メニューから [Promote to variable (変数に昇格)] を選択します。以下を行います。

  • データ入力値を 右クリック した場合 (変数の左側)

    • 適切な型の新規変数の作成

    • 新規変数の名前を直ちに入力

  • データ出力値を 右クリック した場合 (変数の右側)

    • 適切な型の新規変数の作成

    • 新規変数用の Set ノードも作成され、新規変数の初期値をピンの出力値と同じに設定します。

コンストラクション スクリプト

このエフェクト作成作業の大部分は、実際にはコンストラクション スクリプト内で行われます。ゲーム開始後にライトの更新は必要ないため、イベント グラフは使用しません。

このサンプルのコンストラクション スクリプトを簡単に理解するために、一連のコメント ブロックとして以下のように分割しました。

クリックしてフルサイズで表示

実際にブループリント エディタを開いてこのサンプルのコンストラクション スクリプトを視覚化すると理解しやすいかもしれません!

実行したタスクは以下の通りです。

  • ライト色の設定

  • 動的マテリアル インスタンスの作成とこれを変数へ格納

  • 新規の動的マテリアル インスタンスを Light Fixture メッシュへ割り当てる

  • 動的マテリアル インスタンスの色の設定

ライト色の設定

SetLightColor.png

スクリプトのこの部分は、既に適用されているデフォルト値を単に使用し、各ライトの Light Color へ入力します。これはスクリプトで最初に行われる作業であるため、デフォルト値の適用から始まります。プライベート変数は赤、パブリック変数は緑です。ノードを最も簡単に設定する方法は以下のとおりです。

  1. ノードをグラフへ Ctrl+ ドラッグ して、各 Sport Light コンポーネントに Get リファレンスを作成します。

  2. それぞれからワイヤーをドラッグして、検索欄に「Light Color」と入力します。リストに Set Light Color ノードが表示されます。

SetLightColor_node.png

動的マテリアル インスタンスの作成と格納

CreateStoreDMI.png

次のネットワーク部分は、各 Light Fixture Static Mesh に対し動的マテリアル インスタンスを作成します。動的マテリアル インスタンスは、マテリアルのインスタンスを作成したもののコピーであり、ゲームプレイ中に何らかの方法で更新することができます。この例では、 Spot Light コンポーネントに使用した色と一致させるためにマテリアルのエミッシブ カラーを変更することができます。2 つの全く別の動的マテリアル インスタンスを作成したことに気付かれるかと思います。これは、異なる 2 つの色に対して別のインスタンスが必要なためです。

それぞれの Create Dynamic Material Instance ノードの後に、新規に作成したマテリアルを変数に格納していることが分かります。これで後でマテリアルにアクセスできるようになります。色を調整したい場合は、これは必要な設定です。ネットワーク上の別の場所へ Return Value 出力を接続することも出来ますが、変数に格納することによりブループリント スクリプトの編成をきれいに保ち、イベント グラフで必要な時にマテリアルへのアクセスが可能となります。

新規動的マテリアル インスタンスの割り当て

AssigningDMIs.png

独自の動的マテリアル インスタンスの作成のみでは十分とは言えません。これらの新規のマテリアルも、メッシュのサーフェスへ割り当てなければいけません。スクリプトのこのセクションは、 Light Fixture Static Mesh へ動的マテリアル インスタンスを適用します。マテリアル エレメント インデックス 1 を使用していることに留意してください。レンズに配置するために、スタティックメッシュ上に作成しました。つまり、マテリアルは、ライトレンズの色の変更に使用します。

動的マテリアル インスタンス

SetLensColor.png

動的マテリアル インスタンスがサーフェスに割り当てられたので、最後の手順としてこれらのマテリアルに色を割り当てます。2 つの変数を使用してこの作業を行います。まず、一つの変数をパブリック、もう一つの変数をプライベートとして作成します。これは主にチュートリアル目的であることに留意してください。実際は、両方の変数をパブリック変数として作成したほうが実用的であると思われます。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル