UE4のマテリアルやアセット名をまとめてリネームする
この記事について
先日「UE4のマテリアルやアセットをまとめてリネーム(コンテンツブラウザ上でのファイル名の頭に特定の文字列を追加)したいのだけど、なにかいい方法はないか」と聞かれ自分もわからずもやもやしていたのですが、解決したので方法を紹介します
UE4のExperimental(実験的)な機能を使用しているのと、大量のアセットに対して検証していないので問題が起きても責任は負えませんが、参考になれば
2020/09/08追記
UE4.23からBlutilityが廃止され、そちらで使用できた機能はEditor Utility Widgetに置き換えられています。今更の追記となってしまい恐縮ですが、古い記事をそのままにしておくのもよろしくないのでEditor Utility Widgetを利用したリネーム方法を記載します(UE4.25環境)。
Editor Utility Widgetの使い方はキンアジさんのブログで詳しく丁寧に紹介されています。
当記事で紹介するアセットをまとめてリネームする用途以上に様々なことが可能になる機能ですので、是非リンク先も参考にしてみてください。
Editor Utility Widgetを使ってのリネーム
コンテンツブラウザにて新規追加>エディタユーティリティ>エディタユーティリティウィジェットをクリックして作成する(今回はRename2という名称とした)。
作成したエディタユーティリティウィジェットをダブルクリックで開くと、ウィジェットBPとほぼ同一の「デザイナー」画面が開くので、処理を実行するためのボタンを追加し、一応ボタンの子にテキストも追加した(後述するが、ボタンのアンカーは中心とした)。
ウィジェットBP時と同様に、ボタンを押した時のイベントをつくる。階層からボタンを選択し、右の詳細パネルからイベントの項目で「On pressed」(「On Clicked」でも可)を選択する。
こちらもウィジェットBP時と同様に「グラフ」画面に切り替わるので、処理を追加していく。
下記のノードを右クリック後検索窓に入力して選択し、上記画像のように組む
Get Selected Assets:コンテンツブラウザ等で選択中のアセットを取得するノード
For Each loop:繰り返し処理を行うノード
Get Object Name:オブジェクト名(ここではアセット名)を取得するノード
Append:2つ以上のstring(文字列)を統合するノード
Rename Asset:アセット名を変更するノード
組み終えたらコンパイルを押して、コンテンツブラウザへ戻る。
作成したエディタユーティリティウィジェットを右クリックして、メニュー最上部の「エディタユーティリティウィジェットを実行」を押す。
すると、上記のようにウィンドウが開き、「デザイナー」画面で配置したように表示される。ボタンのアンカーが中心以外にあるとウィンドウのサイズ次第で見切れてしまったり隠れてしまうので注意。
上記Gifのように、コンテンツブラウザでリネームしたいアセットを選択した後ウィンドウのボタンを押してエディタユーティリティウィジェットの処理を実行すれば、上手く機能してくれるハズだ。
上記のBPでは「Append」ノードで文字列を追加したが、代わりに「Replace」ノードを使うことで文字列の置換も可能だ。
ほかにはレベル上に一定間隔でアセットを配置したい時などにも、エディタユーティリティウィジェットは活躍してくれるだろう。
以下は過去の記述です。どうしてもUE4.22以前の環境でまとめてリネームを使いたい、という場合のため一応残しておきます。
UE4 Blutilityを使ってのリネーム(UE4.23以降のBlutility機能廃止に伴い無効)
基本的には下記(Alweiさんの記事)を参考に簡単なBPを組んだだけです
ブログの記事そのままですが、簡単に流れを紹介
編集→エディタの環境設定→一般項目の実験段階を選択→Enable Utility Blueprints(Blutility)にチェックを入れて、Blutility(実験的機能)を使用可能にする
コンテンツブラウザの新規追加→ブループリント→ブループリントユーティリティ
親クラスを選択ウィンドウから、GlobalEditorUtillityBaseをクリックし、選択をクリック
コンテンツブラウザ上に作成されたブループリントユーティリティ(画像ではとりあえずtestと命名しています)を右クリックし、「ブループリントの編集」を選択(ダブルクリックして開くと別の画面が出るので右クリックメニューから開くこと!)
表示されたブループリント編集画面で、関数の項目から「+関数」をクリックして関数を新たに追加する(下記画像では関数名をRenameと命名しています)
上記画像のようにブループリントを組む
下記のノードを右クリックして検索し、画像のように組む
Get Selected Assets:コンテンツブラウザで選択中のアセットを取得するノード
ForEachloop:繰り返し処理を行うノード
Get object name:オブジェクト名(ここではアセット名)を取得するノード
Append:2つ以上のstring(文字列)を統合するノード
Rename Asset:アセット名を変更するノード
組んだらコンパイルをしてウィンドウを一旦閉じ、コンテンツブラウザからいま作業をしていたブループリントユーティリティをダブルクリックして開くか、右クリックして「編集」を選択
すると上記のようなウィンドウが開くので、リネームしたいマテリアルやアセットをコンテンツブラウザで選択し、ボタン(画像では関数名をRenameとした)を押す
上手くいくと上のGif画像のようにリネームしてくれる
UE4 Blutilityを使用した記事ではさらに使いこなして高度な機能が紹介されていますが、ただリネームだけしたいの!という解説は意外と見つからなかったので書いてみました(あったらごめんなさい)参考になれば幸いです