読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Unityプロジェクトへファイルを追加する際に上書き更新する

昨日の記事(Unity開発者が複数人で開発を進める上で覚えておくと幸せになる9つの事)で少しだけ紹介したが、思いの外上手く出来ていたので改めて紹介したい。

これはプロジェクトビューへファイルを追加した際、既にファイルが有る場合は上書きコピーするようにしたアセットだ。下のように動作する。

上書き2  
これはUniteのEditor拡張入門Overwriterで紹介されていた事と概ね同じことをしているが、だいぶシンプルに直したものだ。要するにやっていることは2点。

ファイルが追加された時に、ファイル名をチェックする
ナンバリングが新しく振られて追加されたファイルは、元ファイルに上書き

昨日の話でも書いたが、この方法であれば.metaファイルを操作していないのでファイルを上書きしても参照が消える事はなく、Missingになる事は無い。

これでFinderやExprolerでファイルを上書きしなくても、Unityエディタだけで操作が完結する。


※)現在、上書きコピーする際にダイアログが表示されるようになっています。
これを解除したい場合、以下の1文を削除して下さい。

if( EditorUtility.DisplayDialog("override", rootAsset + "を上書きしますか?","上書き", "両方残す" ) )



問題は既にナンバリングが振られているファイル群だ。このナンバリングを付与する仕組みは、ファイル末尾にナンバーが振られている場合はナンバーを増やしてコピーしてしまう。その為、例えばitem1.png のようなファイル名の場合、 item2.png としてしまう。こうなると、item2を追加したのか、追加したら2になったのか判断ができない為、上書きコピーする事ができない。

一応数値は正規表現の部分を書き換えることで取得できるが、数値を記述する様々なフォーマットに対応出来ないし、上記の問題に対応出来ないので、今回はやってない。