UE4でWebページを作ってみたかった
Unreal Engine 4 (UE4) その2 Advent Calender 2017
参加9日目の記事です。
今回は私のやってみたかったことをやった結果になります。
タイトルの通りUE4でWebページが作れるのかを試してみました。
結果を先に言うと作れます(軽くはない)
8日の朝に明日は私の番であるということに気がついたので、
バタバタ作ってみました。
その手順を紹介したいと思います。
(時間がなかったんだ!!)
ではやっていきましょう。
準備
今回はUE4 4.18.1を使用しています。
今回のプロジェクトではHTMLビルドを行います。
UE4起動ボタンのドロップダウンを開き、
オプションを選択します。
対応プラットフォームにHTML5にチェックが入っていることを
確認してください。
ONにして適応ボタンを押してください。
プロジェクトを作成する
では本題に入っていきます。
まずは新規プロジェクトを作成しましょう。
今回はUMGをメインで使用するので、
Mobile/Tablet、Scalable 3D or 2D、 スターターコンテンツなしで
Blankプロジェクトを作成します。
Widgetを作成する
プロジェクトが作成できたら、Widgetを作成していきます。
コンテンツブラウザを右クリック、
User Interface→Widget Blueprintを選択します。
名前は適当にWidget_Baseとしました。
※Header、Footer部分になる箇所を分けて作成してもいいかもしれません。
かなり適当な作り方をしたので、
詳しくは書きませんが、
Webページの見た目となる部分を作成します。
Vertical Boxなどを使っていないため、
解像度を変更するとえげつないズレ方をするため、
これを実践する際にはレスポンシブ的な対応をする必要があるかと思います。
今回はボタンの反応などは入れてません。
新規マップを作成する
デフォルトのマップには色々オブジェクトが配置されているので、
新規マップを作成して、何もない空間を作成します。
左上のFile→New Levelを選択します。
Empty Levelを選択します。
マップを作成したら保存しておきましょう。
今回はMap_Indexという名前にしました。
レベルブループリントを編集する
Map_Indexのレベルブループリントを編集します。
上のBlueprintsタブからOpen Level Blueprintを選択します。
レベルブループリントでは、このようにWidgetを
生成/取り付けを行う処理を書きます。
これでMap_Indexを開くとWidget_Baseが取り付けられます。
HTMLファイルの書き出しを行う
処理が大体終わったので、HTMLビルドを行います。
左上のFileからPackage Project→HTML5を選択します。
書き出されました。
localhostで起動する
HTML5LaunchHelper.exeを起動すると、
ローカルのサーバーが立ち上がります。
ポートは8000のようです。
適当なブラウザを開き、localhost:8000のHTMLファイルにアクセスします。
開きました。
サーバーにアップして起動する
ローカルホストで確認できたので、今度はサーバーにアップして
確認してみましょう。
ファイルのアップにはFileZillaを使用しています。
サーバーに書き出されたHTML5ファイルごとアップロードします。
いらないファイルも混ざってるかもですが気にしない。
ブラウザからURLを入力してページを開くと、
localhostと同じように起動しました。
しっかりとボタンの反応などを組み込めば、
Webページとして活用できるかもしれません。
明日はcom04さんの「ぷちコン与太話-マテリアルゲーム作った話-」です。
個人的にものすごく楽しみにしてます!
UE4 ADX2 LEを使って足音を実装してみよう
前回ADX2 LEの導入記事を書きました。
前回↓
今回はADX2 LEのCri Atom Craft上で編集した
サウンドデータで足音を作成し、UE4で再生してみようと思います。
通常、足音などを再生する場合は複数の足音のデータを
Waveファイルとしてインポートし、
Sound Cueでランダムに再生するかと思います。
イメージ:
...まぁ面倒くさい。
データ容量も大きくなるし、
100種類の足音とかだったらノードも見づらくなります。
ベースの足音を用意する
今回は1種類の足音につき1つのWaveファイルで表現します。
とりあえず、何かしらの足音を1つ用意しましょう。
フリー素材でも大丈夫ですが、
私は玄関の床を革靴で叩いて収録した音を、
使いやすいように調整した音を用意しました。
Cri Atom Craftを起動する
用意したWaveファイルをCri Atom Craftで編集していきます。
Cri Atom Craftを起動してください。
起動したら、左上のファイルから
プロジェクトファイルを開くを選択し、
前回作成したプロジェクトを開きましょう。
開きました。
足音用のフォルダを作成する
今回はフォルダ分けなどを丁寧に行っていきます。
マテリアルルートフォルダを右クリックし、
新規オブジェクト→サブフォルダの作成をクリックしてください。
サブフォルダが出来ました。
このサブフォルダの名前をFootStepに変更します。
変更したFootStepフォルダに足音のWaveファイルを入れていきましょう。
インポートは後で行います。
ワークユニットのキューシートフォルダを右クリック
新規オブジェクト→サブキューシートフォルダの作成をクリックしてください。
作成したサブフォルダにFootStepと名前をつけます。
FootStepフォルダを右クリック
新規オブジェクト→キューシートの作成をクリックします。
今回は足音用のキューシートにする予定なので、
Cue Sheet_FootStepと名前を変更します。
Waveファイルをインポートする
マテリアルルートフォルダに作成したFootStepフォルダに
用意したWaveファイルをドラッグアンドドロップしましょう。
waveファイルがインポートができたと思います。
次に作業用のCueSheet_FootStepに
インポートしたWaveファイルをドラッグアンドドロップします。
CueSheet_FootStepにWaveファイルが追加されました。
音を編集する
ここから音の編集をしていきます。
読み込んだ音を選択してください。
そしてFX1タブを開きます。
今回はこのFX1タブの中で音を編集していきます。
このようにピッチやボリュームの大きさを調節したり、
上にドラッグすることで、ここからここまでという範囲を指定できます。
その範囲の中をランダムで再生します。
今回はピッチの値をランダムに返してほしいので、
画像のようにしてみました。
次に減衰設定を行います。
Atom Cueの方を選択してください。
3Dポジショニングタブを開きます。
減衰距離の最小/最大のパラメータを変更しましょう。
最小を50.0、最大を3000.0にしました。
ここはUE4で再生しながら確認するといいと思います。
キューシートをビルドする
編集はこのあたりにして、CueSheet_FootStepを
右クリックからAtomキューシートバイナリのビルドを選択します。
Cue_Sheet_FootStepにチェックが入っているのを確認して
ビルドボタンをクリックしましょう。
ビルドしたデータをUE4にインポートする
ビルドしたデータは指定した出力パスにあります。
.acbファイルをUE4にインポートしましょう。
インポートしました。
音を再生したいタイミングで
AnimationにNotifyを追加します。
そしてこのように処理を組み、
インポートした.acbファイルを再生します。
確認してみる
どうでしょうか?
1つの音声データからUE4上で編集することなく、
ランダムピッチな足音が再生されていると思います。
UE4 ADX2 LEを導入する
今回はCRI・ミドルウェアのADX2 LEを
UE4に導入してみたいと思います。
UE4にはSound Cueのような
サウンドの強力な機能があります。
が!もうちょっと機能が欲しいなんてこともあります。
UE4の機能を自作すればいいのでは...
ミドルウェアはADX2LE以外にも
WwiseのUE4インテグレーションについて - ぼっちプログラマのメモ
サウンドミドルウェア【Wwise】と【UnrealEngine4】を連携する - I From Japan Staff Blog
FMOD
UE4 + FMOD でインタラクティブなサウンド体験を実現しよう! | rarilog
ADX2LEとは
ADX2LEは株式会社CRI・ミドルウェアから販売されている
「ADX2」の無償版です。無償版ですが、機能は製品版と同じです。
有償版との違いは、ほぼ全てのゲームプラットフォームでのゲーム開発に対応していて、
ライセンスにはサポートが含まれています。
無償版を使用し開発したコンテンツ、アプリの配布/販売には制限があります。
詳細は公式ページを確認してください。
準備
ここから本題に入ります。
まずはADX2 LE SDKをダウンロードしましょう。
http://www.adx2le.com/download/index.html
ダウンロードしたZipファイルを解凍し、
中に入っている「cri」フォルダを任意のディレクトリに移動してください。
推奨はCドライブのルートディレクトリですが、
私はD:/CRIAtomCraft/cri/という感じで配置しています。
UE4プロジェクトを作成する
今回はUE4 4.17.2を使用しています。
今回はFirst Person テンプレートを使用し、
ADX2LEというプロジェクト名をつけています。
作成されました。
ここまで出来たら、
UE4エディタは一旦閉じておきましょう。
CRIWARE Pluginを有効にする
エンジン単位でPluginを入れることも出来ますが、
私はプロジェクトごとにPluginを入れる派なので
今回はプロジェクトごとに入れるようにしていきます。
まずは、プロジェクトフォルダを開きます。
Epic Games Launcherで作成したプロジェクトを右クリックし、
フォルダを開くを選択します。
プロジェクトフォルダが開けたら
cri/UE4/Engine/にあるConfigフォルダと、Pluginsフォルダを
プロジェクトフォルダのルートにドラッグアンドドロップ、
もしくはコピーアンドペーストで持って行きます。
こんな感じにプロジェクトフォルダになったらオッケーです。
再びUE4エディタを起動しましょう。
エディタが起動したら、
左上のEdit→Plugin を選択しましょう。
MiscタブにCRIWARE Pluginがあるので、
Enabledにチェックをつけ、エディタを再起動します。
再起動後、PluginタブでCRIWARE Pluginにチェックがついているか確認しましょう。
ライブラリの初期化を行う
左上のEditからProject Settingsを選択します。
Plugin/CriWareタブでライブラリの初期化を行うことができます。
自分でパラメータをカスタムしない場合は自動的に初期化されますので、
今回はデフォルトのままで扱います。
データの読み込みの設定を行う
このPluginはCRI Atom Craft(後述)で作成した
・ACFファイル
・ACBファイル
・AWBファイル
を使用します。
この中のAWBファイル(ストリーム再生データ)は
レベルロード時に自動的にメモリにロードされないので、
設定が必要です。今回は省略します。
こちらを参照してください。
CRI ADX2 LE マニュアル (for Unreal Engine 4)
CRI Atom Craftを起動する
cri/tools/criatomex/にあるCriAtomCraft.exeを起動します。
左上のファイルからプロジェクトの新規作成を選択します。
プロジェクト名とプロジェクトのファイルパスを決めて、
新規プロジェクトのボタンをクリックします。
次にワークユニットの追加をします。
今回はデフォルトのまま追加をクリックします。
プロジェクトが作成されました。
左下のマテリアルルートフォルダに使いたいWaveファイルを
ドラッグアンドドロップします。
これでWaveファイルをCri Atom Craftにインポートすることができました。
インポートしたWaveファイルをワークユニットのCue Sheetに
ドラッグアンドドロップします。
これでWaveファイルをCri Atom Craftで編集できるようになりました。
ここからWaveファイルを編集していくのですが、
今回は導入記事ですので、割愛します。
Cue Sheet Binaryのビルドをする
Waveファイルを編集したとして、
編集データなどを書き出さなければなりません。
まずは、ビルドからAtom キューシートバイナリのビルドをクリックします。
書き出し先のパスや、ビルドをしたいCue Sheetを選択して、
ビルドボタンをクリックします。
ビルドが完了すると
指定したパスの中にacbファイルが作成されます。
UE4にインポートする
UE4のインポートボタンから先程作成した、
acbファイルをインポートします。
今回はこのファイルですね。
すると、このようにCue Sheetとその中に含まれた、
音のデータがインポートされます。
UE4上で再生する
インポートされたAtom Cueは通常のSound Cueファイルのように
扱うことができます。
レベル上に配置をしたり、
ブループリントから再生することもできます。
ここで注意したいのが、
再生ノードの違いについてです。
同じ名前ですが、通常の再生とCri Atom Craftで作成したファイルの再生とで
ノードが違います。
Atomカテゴリーに入っているノードを再生に使用してください。
UE4 Sound Cueに自作のノードを追加する その2
前回に引き続き自作ノードを作っていきましょう。
今回から機能をつけていきます。
↓前回
前回はC++クラスを作成し、
Sound Cueにノードを出すところまでやりました。
C++を編集する
まずはソース全体を載せておきます。
SoundNodeTest.h
// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Sound/SoundNode.h" #include "SoundNodeTest.generated.h" UCLASS(hidecategories = Object, editinlinenew, MinimalAPI, meta = (DisplayName = "Volume")) class USoundNodeTest : public USoundNode { GENERATED_UCLASS_BODY() // float パラメータ // ボリュームの大きさ UPROPERTY(EditAnywhere, Category = Volume, meta=(ClampMin = "0.0")) float TestVolume; // bool パラメータ // ミュートかどうか UPROPERTY(EditAnywhere, Category = Volume) bool TestIsMute; virtual void ParseNodes(FAudioDevice* AudioDevice, const UPTRINT NodeWaveInstanceHash, FActiveSound& ActiveSound, const FSoundParseParameters& ParseParams, TArray<FWaveInstance*>& WaveInstances) override; #if WITH_EDITOR virtual FText GetInputPinName(int32 PinIndex) const override; #endif };
SoundNodeTest.cpp
// Fill out your copyright notice in the Description page of Project Settings. #include "Public/Sound/SoundNodeTest.h" #include "ActiveSound.h" #define LOCTEXT_NAMESPACE "SoundNodeTest" /** コンストラクタ */ USoundNodeTest::USoundNodeTest(const class FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { // パラメータの初期化 TestVolume = 1.f; TestIsMute = false; } void USoundNodeTest::ParseNodes(FAudioDevice* AudioDevice, const UPTRINT NodeWaveInstanceHash, FActiveSound& ActiveSound, const FSoundParseParameters& ParseParams, TArray<FWaveInstance*>& WaveInstances) { FSoundParseParameters UpdateParameters = ParseParams; if(TestIsMute == true) { UE_LOG(LogTemp, Log, TEXT("ミュート再生")); UpdateParameters.Volume = 0.0f; } else { UE_LOG(LogTemp, Log, TEXT("ボリューム : %f"), TestVolume); UpdateParameters.Volume = TestVolume; } Super::ParseNodes(AudioDevice, NodeWaveInstanceHash, ActiveSound, UpdateParameters, WaveInstances); } #ifdef WITH_EDITOR FText USoundNodeTest::GetInputPinName(int32 PinIndex) const { return LOCTEXT("InputPinLabel", "Input"); } #endif #undef LOCTEXT_NAMESPACE
SoundNodeTest.h から細かく見ていきます。
UCLASS(hidecategories = Object, editinlinenew, MinimalAPI, meta = (DisplayName = "Volume"))
UCLASSに引数を持たせています。
hidecategory
HideCategories | Unreal Engine
MiniMalAPI
※これだけドキュメントが見つからなかった...
簡単に説明すると" "で囲まれた文字列が、
ノードの名前になります。
前回まではC++ファイル名がそのままノードに
なっていたので、今回からVolumeという名前にしました。
次にこれですね。
GENERATED_UCLASS_BODY()
前回レガシーらしいと言いましたが、
GENERATED_BODY()
では動かなかったので、こちらにしています。
まだ違いを確認出来ていないので、
次回にでも説明できればと思います。
// float パラメータ // ボリュームの大きさ UPROPERTY(EditAnywhere, Category = Volume, meta=(ClampMin = "0.0")) float TestVolume; // bool パラメータ // ミュートかどうか UPROPERTY(EditAnywhere, Category = Volume) bool TestIsMute;
ノードに持たせるパラメータの宣言をしています。
UPROPERTYについてはこちらを参考にしてください。
主に、
・編集可能かどうか
・ノードのカテゴリは何か
・数値データの最低値はどこか
を設定しています。
virtual void ParseNodes(FAudioDevice* AudioDevice, const UPTRINT NodeWaveInstanceHash, FActiveSound& ActiveSound, const FSoundParseParameters& ParseParams, TArray<FWaveInstance*>& WaveInstances) override; #if WITH_EDITOR virtual FText GetInputPinName(int32 PinIndex) const override; #endif
関数を2つ宣言しています。
SoundNodeTest.cppも見ていきましょう。
/** コンストラクタ */ USoundNodeTest::USoundNodeTest(const class FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { // パラメータの初期化 TestVolume = 1.f; TestIsMute = false; }
コンストラクタです。
各パラメータの初期値をここで設定しています。
void USoundNodeTest::ParseNodes(FAudioDevice* AudioDevice, const UPTRINT NodeWaveInstanceHash, FActiveSound& ActiveSound, const FSoundParseParameters& ParseParams, TArray<FWaveInstance*>& WaveInstances) { FSoundParseParameters UpdateParameters = ParseParams; if(TestIsMute == true) { UE_LOG(LogTemp, Log, TEXT("ミュート再生")); UpdateParameters.Volume = 0.0f; } else { UE_LOG(LogTemp, Log, TEXT("ボリューム : %f"), TestVolume); UpdateParameters.Volume = TestVolume; } Super::ParseNodes(AudioDevice, NodeWaveInstanceHash, ActiveSound, UpdateParameters, WaveInstances); }
一つ目の関数です。
ノードが上手く繋がっていれば、ここに入ってきます。
ActiveSound.hの中にある構造体
FSoundParseParametersを変数格納し、
引数のParseParamsを代入します。
次にTestIsMuteパラメータにチェックが入っているかを確認し、
入っていればVolumeを0にします。
逆に入っていなければ、TestVolumeパラメータの値を代入します。
最後にSuper(USoundNodeクラス)のParseNodesを呼び出します。
今回更新しているのは第3引数に渡したUpdateParametersだけですね。
二つ目の関数です。
FText USoundNodeTest::GetInputPinName(int32 PinIndex) const { return LOCTEXT("InputPinLabel", "Input"); }
ノードのInput側のピンに名前をつけています。
今回はインプットピンが一つしかないので、
何の意味もありませんが、Inputという名前をつけてみました。
Inputピンに名前つけれた。
— MozPaca (@MozPaca398) 2017年10月17日
Inputが1つならほぼ無意味だけど... pic.twitter.com/Qun6lUaogy
ひとまずC++はこんなところです。
ビルドをしてUE4エディタを立ち上げましょう。
Waveファイルをインポートする
特に意味はありませんが、Waveファイルを
格納するためのフォルダを作成しましょう。
コンテンツブラウザから右クリック
New Folderを選択します。
名前はこんな感じにしました。
作成したフォルダの中に
Waveファイルをインポートします。
※魔王魂からダウンロードしました。
Sound Cueを編集する
前回作成した「Cue_Test」ファイルを
ダブルクリックで開きます。
エディタにインポートしたWaveファイルを
ドラッグアンドドロップで持って行きます。
インポートしたWaveファイルをパラメータとして持つ
Wave Playerノードが出ました。
次に自作ノードのVolumeを出します。
そしてこのように繋げましょう。
完成しました。
確認してみる
Volumeのパラメータを変更しながら、
再生してみましょう。
Volumeが0になるとサウンドがストップするので、
そこだけ注意してください。
UE4 Sound Cueに自作のノードを追加する その1
最近流行っている...かどうかは知りませんが、
Sound Cueに自作のノードを作っていきたいと思います。
ソースを読みながらチマチマ調べたことなので、
「ここはこうした方がいい」というのがあれば教えてください。
準備
新しいプロジェクトを作成しましょう。
Visual Studio 2017を使用しています。
New ProjectからC++タブを選択します。
TemplateやStarter Contentsは特に必要ないので、
Basic Code、No Starter Contentsを選択しています。
プロジェクト名を適当に決め、プロジェクトを作成してください。
UE4エディタとVisual Studioがそれぞれ立ち上がると思います。
新規のC++ファイルを作成する
プロジェクトの作成が完了したら、
エディタ左上のFile→New C++ Class...をクリックします。
※コンテンツブラウザからでもC++ファイルを作成できます。
New C++ Class...を選択すると、このような画面が出ます。
BPでもあるようにここで親クラスを選択します。
ただ最初に表示されているクラスに目的の親クラスはないので、
Show All Classesにチェックを入れ、全てのクラスを表示させます。
今回使用する親クラスは「SoundNode」クラスです。
SoundNodeクラスを選択し、Nextのボタンをクリックします。
次に作成するC++ファイルの名前と格納場所を決定します。
今回はこんな感じにしました。
決定したらCreate Classをクリックしてください。
これでC++ファイルが作成されました。
作成したC++ファイルを見る
次はVisual Studio上での作業になります。
先程作成したC++ファイルが指定した場所にあるのを確認しましょう。
まずはSoundNodeTest.hを見ていきます。
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Sound/SoundNode.h"
#include "SoundNodeTest.generated.h"
/**
*
*/
UCLASS()
class ADDSOUNDNODE_API USoundNodeTest : public USoundNode
{
GENERATED_BODY()
};
※他のファイルにはGENERATED_UCLASS_BODY()と記述されてますが、
調べたところによるとレガシーらしいです。
次にSoundNodeTest.cppを見てみます。
// Fill out your copyright notice in the Description page of Project Settings.
#include "SoundNodeTest.h"
何もない!
実はもうノードは出来ている
まだ何もしていませんが、
実はもうSound Cueのノードとして生成されています。
ビルドをしてUE4エディタを立ち上げましょう。
コンテンツブラウザから右クリック
Sounds→Sound Cueを選択します。
適当な名前をつけましょう。
作成したSound CueのPaletteを見てみると、
作成したC++のファイル名がそのままノードになっています。
ノードして出してみるとこんな感じです。
中身は空なので繋いでも何も起きませんが、
次回からこのノードに機能をつけていきましょう。
次回
UE4 UnrealEngine4の導入手順
今回はUnreal Engine4の導入手順を紹介します。
ブラウザ(Microsoft Edge / Google Chromeなど)から
こちらのサイトにアクセスします。
Epic Gamesアカウントを作成する
アカウントを既に持っている方は、ログインをして
「Epic Games Launcherをインストールする」から進めてください。
画面右上のダウンロードボタンの左にある人のマークをクリックしてください。
画面下にある「サインアップ」をクリックします。
次に必要情報を記述していきます。
必要情報が入力できたら、
「私はサービス利用規約の内容を理解し同意します。」に
チェックをつけ、「アカウントの作成」ボタンをクリックします。
サインアップが完了したら、
登録したメールアドレスとパスワードを使用して、サインインをしましょう。
Epic Games Launcherをインストールする
既にEpic Gamesアカウントを持っている方はここから進めてください。
再びこちらのサイトにアクセスします。
ページ中央、もしくは右上のダウンロードボタンをクリックします。
しばらくするとEpic Installerがダウンロードされます。
しばらくしてもダウンロードが開始されない場合は
PCに合わせてWindows / Macのボタンをクリックして、
ダウンロードしてください。
ダウンロードしたEpic installerをダブルクリックで起動します。
「インストール」ボタンをクリックして、インストールします。
Unreal Engine4をインストールする
デスクトップに作成された「Epic Games Launcher」を
ダブルクリックで起動します。
先程登録したメールアドレスとパスワードを入力して、
サインインしましょう。
「ライブラリ」タブを選択し、「スロットの追加」をクリックします。
インストールしていないバージョンの一覧が表示されるので、
インストールしたいバージョンを選択します。
インストールするバージョンが選択できたら、
「インストール」ボタンをクリックします。
インストールする場所を選択し、
「インストール」ボタンをクリックすると、インストールが始まります。
インストール完了後、「起動」ボタンをクリックすると
Unreal Engien4が立ち上がります。
UE4 マテリアルの色をランダムに変更する
最近、マテリアルの記事書いてないなぁ。
ってことで今回はマテリアルとブループリントを使用して
マテリアルの色をランダムに変更する処理を作成したいと思います。
実は過去記事で今回の処理と同じ処理が写ってたりします。
準備
まずはプロジェクトを作成しましょう。
今回はUE4 4.17.0を使用しています。
作成しました。
マテリアルを作成する
プロジェクトを作成できたら、
コンテンツブラウザを右クリック→Materialを選択し、
新しいマテリアルを作成しましょう。
適当な名前をつけておきます。
作成したマテリアルをダブルクリックで開き、
このようにノードを繋げます。
Vector ParameterをBase Colorにつなぐシンプルなものです。
Vector ParameterのParameter Nameは何でも良いのですが、
今回は分かりやすくBaseColorとします。
これでマテリアルは完成です。
ブループリントを作成する
次にマテリアルを適応するMeshを持つ、
ブループリントを作成します。
コンテンツブラウザを右クリック→Blueprint Classを選択します。
今回のParent ClassはActorにしました。
こちらもマテリアル同様、適当な名前をつけます。
作成したブループリントをダブルクリックで開き、
Add ComponentからSphereを選択します。
こんな感じになると思います。
このSphereのマテリアルを先程作成した、
M_Randomに変更しましょう。
処理を書いていきます。
Construction Scriptタブを開き、このようにノードを繋げます。
SphereメッシュのElement Index 0のマテリアルを
Dynamic Material Instanceとして変数に格納します。
※マテリアルが複数ある場合はFor Loopと配列で
全てのマテリアルを格納することも可能です。
次にイベントグラフタブを開き、
このようにノードを繋げます。
変数に格納したマテリアルの色をランダムに変更しています。
Set Vector Parameter ValueのParameter Nameには
マテリアルを作成したときにつけたVector Parameterの名前を入力してください。
Random Floatノードは0~1の値をランダムに返してくれるノードです。
もしEmissive Colorで1以上の値が欲しい場合には
Random Float in Rangeノードを使用すると良いと思います。
配置する
作成したブループリントをレベルに配置しましょう。
確認してみる
このように生成された瞬間に
ランダムに作成された色が適応されていると思います。
余談
同様の処理を使い、Event Begin PlayをEvent Tickに
変更してみました。