【UE】アセットのチェックアウト(ロック)処理を Editor Utility Blueprint で作る方法

Unreal Engine

はじめに

Unreal Engine で共同開発するときは Git や Perforce などのバージョン管理システムを使うかと思います。
コンテンツブラウザで見れる Unreal Engine のアセットは基本的にすべてバイナリファイルなので複数人で同じファイルを編集するとそのファイルをいい感じにマージすることはできません。
.cpp や .h、.ini などは1つのファイルを複数人で編集しても自動でいい感じにマージできることが多いですが、.uasset や .umap ではコンフリクトを避けるために誰かがファイルを編集するときはそのファイルをチェックアウト(ロック)する必要があります。

Unreal Engine でバージョン管理を行うためのセットアップを一通り済ませると、コンテンツブラウザのアセットを右クリックしたメニューからそのアセットをチェックアウトすることができますが、今回はどうしても Editor Utility Blueprint で複数のアセットを一括でチェックアウトさせたかったのでアセットをチェックアウトする処理を Editor Utility Blueprint で作る方法を忘れないうちにメモしておきます。

結論

早速結論です。
以下のような処理を Editor Utility Blueprint に書けばOKです!

  1. まずは GetSelectedAssets() などを使ってチェックアウトしたいアセットを取得します
  2. チェックアウトしたいノードが複数あるときは ForEachLoop などでそれらを1つずつ取り出しましょう
  3. GetObjectName() でそのアセットのアセット名を取得しましょう
  4. GetCurrentContentBrowserPath() でそのアセットのパスを取得しましょう
  5. Append を使ってアセットパスとアセット名の間に「/」を付け加えましょう
  6. CheckOutFile() を呼び出して InFile 引数にその文字列を渡します

ちなみにここで出てきた GetCurrentContentBrowserPath() を使うと現在選択しているアセットのパスを取得できるのですが、ここで取得できるパスは「/Game」から始まってそのアセットがある階層のフォルダ名で終わるやつです。

例えば以下の画像の BP_Enemy を選択している状態で GetCurrentContentBrowserPath() の戻り値を確認すると「/Game/Sample/Blueprints/Actor」となります。

なので CheckOutFile() の InFile 引数には「/Game」から始まってアセット名で終わる「/Game/Sample/Blueprints/Actor/BP_Enemy」のような文字列が入ることになります。

最後に

参考記事

お問い合わせ

    タイトルとURLをコピーしました