【UE5】動的にテクスチャを切り替える方法

プログラマーの尾関です。
今回はマテリアルに適用したテクスチャを動的に切り替える方法について解説したいと思います。
- 動作確認バージョン:UE5.5.2
また今回使用した画像は Freepik様の提供されている素材を使わせていただきました。
手順概要
手順の概要としては、大まかに以下の2つです。
- 1. TextureSampleParameter2Dノードを使う
- 2. MDI (Material Dynamic Instance) を生成してマテリアルパラメータを動的に変更する
MDIについては、以下のページで説明をしています。
手順
TextureSampleParamter2Dノードの作成
対象のマテリアルを開いたら、何もないところで右クリックして「TextureSampleParameter2D」ノードを作成します。

そしてベースカラーと必要であればオパシティに接続します。

またパラメータ名を設定します。(※ノードを選択してF2キーなど)
なお透過をするためにはマテリアルの "Blend Mode" を "Translucent" にする必要があります。

今回は「DynamicTexture」というパラメータ名としました。

複数のテクスチャをメンバ変数に登録
今回はテクスチャをアクターに直接持たせるようにしてみます。例えばメンバ変数に 「テクスチャ」を配列で持たせてみました。


そして アクターの詳細から各テクスチャを登録します。

MDI (Material Dynamic Instance) の生成
Construction Scriptなどで、「Create Dynamic Material Instance」ノードを使ってマテリアルを生成します。

テクスチャの切り替え
アクターに例えば “ChangeTexture” というような関数を作ってMID (MDI) の “DynamicTexture” に切り替えるテクスチャを設定します。

そしてこの関数をレベルブループリントから呼び出すようにしてみました。

これでテクスチャを動的に切り替えられるようになりました。
