C# UE4のアセットの命名規則チェックツールを作ってみた
QiitaのUE4アドベントカレンダー初参加です。
UE4の大量のアセットに対して「命名規則が守られているかをチェックしたい!」と思い、せっかく覚えたC#でチェックツールを作ってみました。
完成したツールはこんな感じ。
左のテキストボックスにUE4のアセットのリファレンス情報を貼り付けて、アセットの種類に応じたボタンを押せば、命名規則が守られていないものだけが右のテキストボックスにリストアップされます。
命名規則をどうチェックするかというと、あらかじめ正しい規則をチェック用のテキストファイルに正規表現で指定しておきます。
その正規表現にマッチしないものがリストアップされるという訳です。
2017.12.17 ver2.0にアップデートしました!
・レベルとスケルタルメッシュを追加対応
・ボタンの並び順を変更
・アセットの種類をリファレンス情報を元に判定
ボタンに対応するアセットが無い場合にメッセージを表示
・結果の数を正しい値が出るよう修正
・変数名や関数名が分かりにくかったので全体的に修正
2017.12.28 ver3.0にアップデートしました!
・チェックボタン一発で表に全タイプのアセットを一括でリストアップ
・Exelに貼り付け時にセル内で折り返さないようクリップボードへコピーボタンを追加
実行ファイルはこちらにアップしています。GitHubはこちら。
ライセンスは MIT License です。
使い方
① あらかじめテキストファイルに命名規則を正規表現で書き込んでおく
実行ファイルと同じ場所にUE4の各種アセットのタイプごとに用意した8つのテキストファイルが入っています。
下図のようにブループリントのテキストファイルの例だと「BP_」で始まるなら、チェック時に正しいアセット名だと判断されます。
複数の命名規則を指定したい場合は改行して次の行に書いていくようにしてください。
正規表現とは、「*」「?」といったワイルドカードをもっとパワーアップさせたもので、以下のあたりを覚えておけば大体は何とかなると思います。
^ ‥ 行頭
$ ‥ 行末
.* ‥ 何かの1文字が0回以上繰り返す文字列
.+ ‥ 何かの1文字が1回以上繰り返す文字列
② UE4でチェックしたいアセットのリファレンス情報を取得する
UE4のコンテンツブラウザ上で調べたいフォルダを選択し、調べたいアセットの種類をフィルタで表示して全選択、Ctrl + C でリファレンス情報を一括で取得できます。
③ ツールの左のテキストボックスへリファレンス情報を貼り付けてボタンを押す
ツールを起動してクリップボードからペーストすると「アセットのタイプ'/Game/パス/アセット名.アセット名'」という形式のリファレンス情報が並びます。
そしたらアセットのタイプに応じたボタンを押せば、結果がリストアップされます。
アセットパスとアセット名の間にタブスペースを挟んで表示しているので、こちらを全選択してコピーし、エクセルにペっと貼り付けると勝手にパスとアセット名で別セルに分かれてくれます。
C#の中身に関しては特に解説しませんが、正規表現について調べた際に参考にさせて頂いた動画についてのツイートを貼り付けておきます。
UE4のアセットのリファレンス情報から命名規則チェックツールを作りたくて正規表現のルールを確認し直し中。。こちらの動画がとても分かりやすかった。https://t.co/uXsaZ8m15X
— moko (@moko_03_25) 2017年11月11日
UE4のリファレンス情報からパスとアセット名を抜き出すのは以下のような感じでやりました。
アセット名を含まないパスとアセット名を別々に取り出したい時は
— moko (@moko_03_25) 2017年11月11日
".*?'(?<pass>/(.*?/)+)(?<name>[^.]+)"
m.Groups["pass"].Value;
m.Groups["name"].Value;
これで抜き出せた。。
本来ならUE4上で定期チェックしたり、またはクック時に自動チェックしたりできると良いと思うので我ながら泥臭い方法だとは思いますが、趣味と勉強と実益を兼ねて自分にできる範囲のものを‥というのが今回のツールでした。
以上です!
そしてアドベントカレンダーのお次は @murase_syuka さんですっ