さて、最後にレベル上で選択しているスタティックメッシュアクターの素材を入れ替えるツールを作ってみましょう。コンテンツブラウザで選択中のアセットに差し替える形で実装します。
デザイナーで外観を変更
まずは『Editor Utility Widget』を開いて3つのボタンに増やしてテキストも変えます。
コンパイルするとこちらのような感じになります。クリックイベントも追加しておきましょう。
BP を編集
それではグラフに移ってブループリントを新たに構成していきます。今までの構成は削除してください。もし未使用の不要な変数があれば「Edit」メニューから簡単に削除できます。
スタティックメッシュを差し替える
まずはアクター自体のスタティックメッシュを差し替える構成を作ります。
コンテンツブラウザで1つだけスタティックメッシュを選択してそのスタティックメッシュに差し替えたいので「スタティックメッシュを1つだけ選択しているか」を判定するために、スタティックメッシュでフィルタした上で取得した個数が1つかどうかで条件分岐させます。
コンテンツブラウザで選択したアセットを格納しておくための変数を作っておきます。
スタティックメッシュが選択されていなかったり、2つ以上選択していた時には「📘 Show Message Dialog」でダイアログメッセージを表示します。「YES / NO」のような選択肢は不要なので「Message Type」は「Ok」にします。一方で、正しく選択している場合は先ほど用意した Static Mesh Object Reference
型の変数に格納します。
後半は選択中のアクターを取得してスタティックメッシュアクターでフィルタします。
その後にスタティックメッシュコンポーネントにキャストして「📘 Set Static Mesh」でコンテンツブラウザ上で選択しているスタティックメッシュを格納している変数を「New Mesh」に指定して差し替えます。
コンパイルして保存したら試してみましょう。うまく差し替える事ができました。
コンテンツブラウザで正しく選択できていない場合、メッセージもちゃんと表示されました。
マテリアルインスタンスを差し替える
スタティックメッシュ差し替えの構成をまるっとコピーして一部だけ編集していきます。まずはコンテンツブラウザで選択するアセッを「Material Instance Constant」に変更します。
メッセージの内容もマテリアルインスタンスに変更しておきます。
変数の「Set」や「Get」もマテリアルインスタンスに差し替えておきます。
最後の差し替え部分は「📘 Set Material」を使用します。
コンパイルして保存したら試してみましょう。うまく差し替える事ができました。
テクスチャを差し替える
それでは最後にマテリアルインスタンスのテクスチャパラメータのテクスチャを差し替えてみましょう。先ほどと同様に構成をまるごとコピーしてフィルタを「Texture 2D」に変えます。
メッセージの内容もテクスチャに変えます。
変数の「Get」や「Set」もテクスチャのものに変えます。
そしてスタティックメッシュコンポーネントからマテリアルを取得、マテリアルインスタンスにキャストしてから「📘 Set Material Instance Texture Parameter Value」を使ってパラメータ名を指定してテクスチャを差し替えます。
コンパイルして保存したら試してみましょう。うまく差し替える事ができました。