忘れん坊の備忘録

情報工学科に通う大学生のメモ。あまり詳しくは無いです。備忘録として殴り書き

Unityのファイル移動で困った話

久しぶりのブログになってしまいましたが、自分のメモとして更新します。

Unityでファイルを移動させたりフォルダを作ったりする時にmetaファイルも操作するのが面倒臭く、Unity側で作成しているAssetDatabaseというインタフェースを使うとmetaファイルごと操作してくれるのでそれを使っていました。

Unityではmetaファイルの操作は結構大事なので基本的にはAssetDatabaseを使ったほうが良いと思います。

AssetDatabase - Unity スクリプトリファレンス

行おうとしていた動作的には

ファイルを読み込む→名前に応じて自動でフォルダを作成→ファイルを移動

という処理なんですが、フォルダを作ってすぐに移動させようとするとエラーが😱

なぜ??と調べているとこんなサイトが見つかりました。

フォルダを作成する命令を実行した直後は、既存のフォルダを作成中なので、フォルダの容量とかがわからないから、unity内ではまだ、正確にフォルダの処理が行えないのだと思います。

Unity - UnityのEditorScriptに関して(28071)|teratail

なん・・・だと・・・????

どうやらフォルダが作られるまでラグがあって、フォルダが作られるまでは存在していない扱いで進められてしまうようです



ということで、作り終わるまで待つというスクリプトを書いたんですが死ぬほどわかりづらいのでやめました (これでやりたいという方はDictionary型で管理してfor分で回す感じになります)

AssetDatabaseは諦めてC#の標準File操作を使う羽目になりました。

metaファイルも自分で移動したりしないといけなかったので面倒くさいことにはなりましたがなんとか実装できました・・・。

追記>2018/8/15 C#のFile.Moveを使ってアセットを移動させmetaファイルを消去したら、OnPostprocessAllAssets()の第3引数に引っかからない結果になりました。 おそらくですが、metaファイルも移動させないとダメなんだろうなと思います




これと同じような感じでassetを読み込んですぐに設定を変えようとすると、エラーを吐かれました。

おそらくmetaファイルを一旦保存してからではないと移動できないという理由な気がします。


この辺りはmetaファイルのせいなきがするなぁ・・・・

metaファイル面倒くさい・・・・

環境:Unity5.3