こんにちは、Unityエンジニアのオオバです。
Unityで開発していると不要なファイルが出てきますよね。
- 不要な画像
- 不要なマテリアル
- 不要なスクリプト
- 不要なサウンド
などなど。
Unityプロジェクトには必要なファイルだけ置いておきたい。
それでなくてもファイルはどんどん増えていきます。
いつの間にかゴミ屋敷になることも。
本記事ではUnityプロジェクトからファイルを削除するときの注意点を紹介します。
結論、いきなりファイルを消すのは危険です。ダメ絶対。
ということで、安全なファイルの削除方法の解説をします。
使用箇所がないことを確認してUnityプロジェクトから削除しよう
はじめに結論を簡単にまとめます。
①スクリプトはエディタから参照(使用箇所)を確認
②削除したいファイルのGUIDで確認
③参照(使用箇所)がなくなったことを確認して削除する
気軽にファイルを消すと事故の元。
「ゴミファイルだと思っていたら実は使っていた」 みたいなことはよくあります。
とくにチーム開発の場合に多い事故ですが、
個人開発でも 1ヶ月前の自分の行動なんて覚えてない ですよね。
本記事ではUnityプロジェクトからファイルを消す前にやるべき2点を紹介します。
これを理解すればもう怖くありません。
バンバン消せます。
ファイル削除に不安の方はぜひ最後まで読んでみてください。
👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!
【注意】シーンやPrefab、各種アセットで使われている
あなたが今Unityプロジェクトから削除しようとしているそのファイル。
どんなところで使われているでしょうか。
例えば画像だったら以下の可能性があります。
- シーン内のImageコンポーネント内
- Prefabの中
- ScriptableObjectの中
- Materialの中
- Resourcesフォルダ内からスクリプト参照
パッと思いつくだけで5種類の可能性があります。
つまりファイルを削除する前にこれらの可能性を考えておく必要があるのです。
ファイルの追加は簡単ですが、削除って意外と大変なんですね。
【Unity】Prefabを生成する方法徹底解説
Prefabとは再利用可能なGameObject。Prefabは生成することで価値を発揮します。本記事ではPrefabの生成方法について徹底解説します。
スクリプト同士の参照の有無で削除してはダメ
スクリプトファイル(C#ファイル)はどうでしょうか。
みなさんVisual StudioやRiderといったプログラミングエディタを使っていると思います。
👉 【2022年版】Visual StudioをインストールしてUnityで使う方法
たいていのエディタではファイルの参照を検索することができますよね。
つまりそのスクリプトがどこから呼ばれているのかが分かるのです。
しかし残念なことに、これだけではすべての使用箇所は洗い出せません。
その他これらの可能性があるのです。
- シーン内の単独で動作するスクリプト
- Prefabの中
- ScriptableObjectの中
結論、プログラミングエディタでの参照は検索しつつも最終的には違う方法で検出する必要があるのです。
ファイル固有のGUIDで参照を解決する
ファイルの使用箇所は GUIDで検索するのが確実 です。
GUIDとは、 ファイル固有のID で重複することはありません。
UnityはGUIDを使って参照関係を保存しています。
つまりそのGUIDを使えばどこで使用しているかという情報が手に入るということです。
まずはそのGUIDの確認方法から紹介します。
Unityプロジェクトから削除するために重要なGUIDの確認方法
GUIDはmetaファイルで確認します。
例として、 HelloWorld.cs
というスクリプトファイルのmetaファイルを開いてみます。
metaファイルはファイルと同じ場所にUnityが自動生成。
HelloWorld.csと同じ階層の HelloWorld.cs.meta がmetaファイルです。
このHelloWorld.cs.metaをテキストエディタで開いてみます。
guid: 7442b0c5f6c2141a5806db74c2a11ecb
と書かれた部分の7442b0c5f6c2141a5806db74c2a11ecb がHelloWorld.csのGUIDです。
このようにファイルのGUIDを調べるときは、
metaの中身をテキストファイルで見てみましょう。
これからこのGUIDを使って参照を調べていきます。
今回調べたGUIDをしっかり覚えておいてくださいね。
Unityプロジェクトからファイル削除する前にGUIDで参照確認
ここからはUnityではなく、シェルスクリプトを使っていきます。
もしこの記事を読んでいるのが非エンジニアの方であれば、
この記事をエンジニアに見せて対応してもらってください。
もちろん、非エンジニアの方にも伝わるように努力して書いていこうと思います。
今回はMac環境でのお話ですがWindows環境でも動きます。
まずターミナルを開きます。
アプリケーション > ユーティリティ > ターミナル をダブルクリック。
黒または白いスクリーンに文字しかない画面が表示されたと思います。
オオバはダークモードなので黒のターミナルです。
まず
cd
と打ちます。cd の後ろに スペース があるので注意。
今開いているUnityプロジェクトのAssetsフォルダをターミナルにドラッグアンドドロップ。
そのあとにリターンキーを押してください。
これで準備は完了です。
GUIDでファイルを検索
grep -l 7442b0c5f6c2141a5806db74c2a11ecb -r .
👆のようにターミナルに打ってみましょう。
7442b0c5f6c2141a5806db74c2a11ecb
の部分は自分が調べたいGUIDに書き換えてください。
最後にリターンキーを押します。
するとGUIDにヒットしたファイルリストが表示されます。
そのファイルが使用箇所ということです。
👆こんな感じです。
検索結果はこんな感じ。
検索したファイル自身のmetaもヒットしてしまう ため、
使用箇所は合計2箇所だったということがわかりました。
- ./HelloWorld.prefab
- ./Sample.unity
prefabの中 、 シーンの中 で使われていたということでした。
実際にこのスクリプトを削除する際はprefabとシーンの方を何か対応を入れることになるでしょう。
あらかじめ削除するスクリプトをPrefabとシーン側から外しておくなど。
このように GUIDを使えば確実にオブジェクトの参照をクリアにすることができる のです。
まとめ : Unityプロジェクトのファイルを削除するときチェックすべきポイントまとめ
最後に記事の内容を簡単にまとめます。
①削除する前に参照関係をしっかり確認しよう
②Unityの参照関係はGUIDで管理されている
③GUIDはmetaファイルに格納されている
④grepを使ってGUID検索すると使用箇所がわかる
こんな感じです。
シェルやターミナルを使う時点で少しテクニカルで難しかったかもしれません。
読んでみてわかったと思うのですが、そんなに難しいことはしていないのです。
Unityプロジェクトからファイルを削除するのは意外と大変でしたね。
だからこそ日々あまりポンポンごみになりそうなファイルは追加しないほうがよいのです。
そして参照関係がどこで作られているかパッと見では全くわかりませんでした。
GUIDが参照の鍵だということも理解できたと思います。
今後Unityプロジェクトの中身を整理するタイミングで、ファイル削除の機会が訪れた時この記事のことを思い出してください。
というか読み直してみてください。
削除する前には 参照関係を解決する必要 があります。
それだけ覚えておけばとりあえず大丈夫です。
この記事があなたのUnity開発の助けになると嬉しいです。
この記事が気に入ったらフォローしよう
- Unity2020.3.26f1