#ADX2 ロボット機能でビルドファイルをUnityへコピーするだけ


はじめに

UnityでADX2を使う場合、ACF,ACB,AWBを適切な場所へコピーする作業が必要で、これ手作業でやるとミスとかしそうなので、python でコピーするものを作って使っていたのですが、それをADX2ロボット(CRI Atom Craft ロボット機能)に移植してみました。

非常にシンプルなので、ADX2ロボットで最初に動かしてみるサンプルとして良いかもしれません。

導入方法などはこちらの記事「ADX2ロボット機能を使ってみる備忘録」を参照ください。

スクリプト

実行すると、ファイルの存在確認をして、あればコピー処理をします。

コピーに失敗するとNGと表示されます。

Pathについては、各プロジェクトごとに適宜修正してもらえればと思います。

CopyToUnity.py
# --Description:[tatmos]ACF,ACB,AWBをUnityへコピーします。
import sys
import cri.atomcraft.project
import cri.atomcraft.project as acproject
import cri.atomcraft.debug as acdebug
import os
import shutil

srcPath = "C:/MyDearest/github/CraftData/Megalith/PC/"
dstAcfPath = "C:/MyDearest/github/Megalith/Assets/StreamingAssets/adx2/"
dstAcbPath = "C:/MyDearest/github/Megalith/Assets/StreamingAssets/adx2/"

if(os.path.exists(srcPath)):
    acdebug.log("srcPath OK");
if(os.path.exists(dstAcfPath)):
    acdebug.log("dstAcfPath OK");
if(os.path.exists(dstAcbPath)):
    acdebug.log("dstAcbPath OK");

acfAcbAwbNameList = ["BGM.acb","BGM.awb",
                     "SE.acb","SE.awb",
                     "VOICE_ja.acb","VOICE_ja.awb",
                     "VOICE_en.acb","VOICE_en.awb",]

# ACFファイルコピー
shutil.copyfile(srcPath + "Megalith.acf", dstAcfPath + "Megalith.acf")

# ACBファイルコピー
for acfAcbAwbName in acfAcbAwbNameList:
    shutil.copyfile(srcPath + acfAcbAwbName, dstAcbPath + acfAcbAwbName)
    if(not os.path.exists(srcPath + acfAcbAwbName)):
        acdebug.warning(srcPath + acfAcbAwbName + " NG");
    if(not os.path.exists(dstAcbPath + acfAcbAwbName)):
        acdebug.warning(dstAcbPath + acfAcbAwbName + " NG");

注意点

  • ファイルのパスを直接書いているので、環境ごとに書き換えが必要です。適宜パスを書き換えてください
  • ACFのコピーを別にしているのは、一時期ACFだけ配置を変えたことがあっただけで、まとめてしまっても問題ない。(名残から変数名がちょっと雑ですが気になる人は直して使ってください)
  • 毎度内容比較もせずコピーするので、バージョン管理などで差分をみて間違いないかは確認した方が安全と思われます。(意図しないバイナリを間違ってマージしないように注意)

おわりに

ロボット機能の使いどころ:
使っていて、ちょっとこれ手間だな・・・ というものをロボット化することが最大のメリットかもしれません。

ファイルのコピーとか
検索して選択とか
こういう頻繁に行う操作などもスクリプト化するメリットが高いと思います。

ここから、ADX2ロボット沼(CRI Atom Craftロボット沼)へはまっていく人が増えれば幸い。(他の人の作った便利機能とか見てみたい)