その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

UnityプロジェクトのLibraryは削除してもよい?

Library配下には何やら意味不明ファイルが沢山生成されて、バージョン管理システムにコミットする必要はないのかな?と調べてみたら、どうやら必要そうでした。


http://www.cis.sojo-u.ac.jp/~izumi/Unity_Documentation_jp/Documentation/Manual/Behind%20the%20Scenes.html

Unityは自動的にアセットをインポートしすべての種類のメタデータを管理します。どのように動作しているのでしょう?


テクスチャのようなアセットをAssetフォルダに配置すると、Unityは新しいファイルで何か解らないものが追加されたことを検出します。新しい一意なIDがアセットに与えられ、Unityはインポートを開始します。Unityは全てのインポートされたアセットを処理します。テクスチャをProject Viewで見たときには、既に処理が完了したアセットを見ているわけです。


この方法で多くのメタデータをインポートされたアセットにアタッチすることが出来ます。例えば、テクスチャインポー ト設定でテクスチャがミップマップを使うことを指定できます。Photoshopはもちろんミップマップをサポートしませんのでメタデータが必要です。そ れぞれのアセットに関する全てのメタデータはLibraryフォルダに格納されます。ユーザはLibraryフォルダを主導で変更してはいけません。


Unity内のプロジェクトビューでアセットを移動したり管理したりすることが出来ます。Unityは自動的に全てのファイルの移動を追跡し他のアセットを参照します。ファイルは必ずUnity 内で移動しなければなりません。プロジェクトビューでドラッグアンドドロップを用いれば簡単に行なえます。しかし、オブジェクトをエクスプローラ (Windows)やファインダ(OS X)で移動すると、Unityは移動を検知しません。その場合、新しいアセットが作成されたように処理され、元のアセットは削除されたものとして扱われま す。そのため、アセットをOSのファイルマネージャで動かすとアセットへの参照は失われてしまいます。


Libraryフォルダはプロジェクトにとって非常に重要です。UnityはLibraryフォルダを自動的に管理します。そのため、絶対にLibraryフォルダのファイルを移動したり編集してはいけません。あなたのプロジェクトにとって生命線です。削除してしまったら、全てのアセットへの接続は失われてしまいます。


プロジェクトをバックアップする場合は、常にプロジェクトフォルダのレベルでバックアップしてください。AssetフォルダとLibraryフォルダが必ず含まれていなければなりません!