前回は、 Unity で GameManager.cs を作成すると歯車アイコンになる謎を調べてたどり着いた、 Unity 公式フォーラムの回答をもとに、アイコンが変わる他の名前についての確認や、ユーザ自身で特定のファイル名のアイコンを変える方法を紹介しました。
前回の記事:Unity GameManager 同様に特定ファイルのアイコンを変える方法 | Compota-Soft-Press
今回は、Unity の Project ウィンドウ内でアイコンが変わる特殊なファイル名の調べ方について紹介します。
※調べている途中で Unity エディタの Console ウィンドウにエラーメッセージが多数発生するので自己責任でご利用ください。
※Unity のバージョンは 2021.3.25f1 Personal です。
Unity 本体のフォルダ内にある謎のアセットファイルの調査
質問サイトの「c# – Special Icon when naming a MonoBehaviour class GameManager – Stack Overflow」を参考に、GameManager などのアイコン画像が格納されているファイルをコピーして、 Unity プロジェクトにアセットとして追加して中身を確認します。
謎のアセットファイル 3 個のコピー
Unity のインストールフォルダ内の Editor\Data\Resources フォルダにアクセスします。
その中にある以下の 3 つのファイルはアセットとして展開できるので、それらをコピーします。
※展開はできますが、 Editor の Console にエラーが表示されます。
- unity default resources
- unity editor resources
- unity_builtin_extra
コピーした 3 つのファイルを適当な場所に貼り付けて、拡張子 .asset を各ファイル名のあとに追加します。
- unity default resources → unity default resources.asset
- unity editor resources → unity editor resources.asset
- unity_builtin_extra → unity_builtin_extra.asset
謎の 3 個のアセットファイルを Unity で表示
適当な Unity プロジェクトを作成して、 Unity エディタを起動したら、 Project ウィンドウで適当な場所に Resources フォルダを作成します。
先ほどの 3 個のファイルは、エクスプローラから貼り付けるので、その Resources フォルダを右クリックしてメニューの Show in Explorer メニューアイテムを選択します。
エクスプローラで Resources フォルダに先ほどの .asset をファイル名に追加した 3 個のファイルを貼り付けます。
Unity エディタを開くと、アセットとして読み込まれます。
※ Console ウィンドウにはエラーメッセージが表示されます。
これで、謎のアセットファイルを Unity エディタで表示できました。
謎のアセットファイルの中身の確認
先ほど追加した 3 個のアセットは、Project ウィンドウでアイコンの右側の三角ボタンを押すことで中身を展開できます。
unity_builtin_extra を展開すると、Unity がデフォルトで持つ UI 用の画像やシェーダーファイルが確認できました。
unity default resources を展開すると Unity の作品を起動する際に表示されるロゴ画像などが確認できました。
unity editor resources はスクロールするときにダイアログがたまに表示されるなどして不安定でしたが、後で説明する GameManager 用のアイコン画像などが確認できました。
謎のアセット内でのアイコン画像の検索
Project ウィンドウの検索ボックスに GameManager と入力すると、自身で作成した GameManager.cs とそれに対応するアイコン画像 (GameManager Icon) の Texture 2D がアセットが見つかりました。
アイコン画像は unity editor resources の中にあるようです。
Project ウィンドウの検索ボックスで Icon と入力すると、 GameManager の他に、前回紹介した Folder などのアイコン画像も見つかりました。
この検索結果の中の「アセット名 Icon」の形式の名前のアセットが、そのアセット名のアイコン画像に対応しているようです。
これで、アイコンが変わる特殊な名前を確認することができましたが、Unity エディタの Console ウィンドウではエラーがたくさん表示されるので、確認する際は空のプロジェクトなどを作成して自己責任で行ってください。
アイコンが変わる特殊なファイル名を列挙するプログラム
先ほど行った Unity 本体のフォルダ内にあるアセットファイルを、プログラムで読み取り、アイコンに対応するファイル名を列挙するプログラムが公開されていました。
※プログラムの使用は自己責任です。
- c# — MonoBehaviourクラスGameManagerに名前を付けるときの特別なアイコン
- c# – Special Icon when naming a MonoBehaviour class GameManager – Stack Overflow
上記のリンク先のプログラムを Unity エディタのプロジェクトに追加してエディタ拡張から、アイコンが変わる特殊な名前を列挙できます。
また、上記の 2 つのサイトのうち 1 番目の日本語サイトの方では、その結果のリストも紹介されています。
独自のプログラムは独自の名前空間に配置するべきなのか?
前回も紹介した Unity フォーラムの GameManager のアイコンに関する質問の回答の中には、独自のプログラムのファイル名が Unity のビルトインのものと重複するのは良くないので、名前空間を分けるべきという意見がありました。
If you could relate then, it’s sort of like keywords in programming language.
They are reserved, if you want to create something with exact name, using namespace will help you in that case.
It’s not a bug, scripts with those names are present in Unity, so the icon assignment module, assigns icon to anything with the same name.USE NAMESPACE, clear all your confusions.
(以下、 Google 翻訳)
共感していただければ、これはプログラミング言語のキーワードのようなものです。 これらは予約されており、正確な名前で何かを作成したい場合は、名前空間を使用すると役立ちます。 これはバグではありません。Unity にはこれらの名前のスクリプトが存在するため、アイコン割り当てモジュールが同じ名前を持つものにアイコンを割り当てます。 名前空間を使用して、混乱をすべて解消してください。
GameManager.cs Icon ? – Unity Forum の一部抜粋とその Google 翻訳
This is baked into Unity, but it’s a fake problem. It arises only when you put your user-written code into the global namespace. Don’t do it!
The real answer is that all user-written script code should be in its own namespace — that’s what the feature is there to do. It would help if the Unity templates adopted that convention.
(以下、Google 翻訳)
これは Unity に組み込まれていますが、偽の問題です。これは、ユーザーが作成したコードをグローバル名前空間に配置した場合にのみ発生します。やめてください! 本当の答えは、ユーザーが作成したすべてのスクリプト コードは独自の名前空間に存在する必要があるということです。それがこの機能の目的です。 Unity テンプレートがその規則を採用していれば助かります。
GameManager.cs Icon ? – Unity Forum の一部抜粋とその Google 翻訳
これは Unity フォーラムの質問に対する回答の一つです。公式が示すルールではないと思います。
しかし、名前空間を分けることで名前が衝突するリスクは減るので、GameManager という名前を使わないのではなく、独自に追加するプログラムは名前空間を分けて置くことが良いと思いました。
まとめ
今回は、Unity で GameManager.cs など特定の名前のアセットを作成した際に通常と異なるアイコンが割り当てる画像アセットの場所について紹介しました。
また、3 つのビルトインのファイルをアセットとして Unity エディタ上で展開する具体例や、検索結果によって Project ウィンドウでアイコン用のアセットを探す手順についても紹介しました。
すでに他サイト様などで公開されているプログラムによって、それらと同様のプロセスでアイコンが変化するアセット名のリストを取得できることも紹介しました。
参照サイト Thank You!
- Unity のリアルタイム開発プラットフォーム | 3D/2D、VR/AR のエンジン
- c# — MonoBehaviourクラスGameManagerに名前を付けるときの特別なアイコン
- c# – Special Icon when naming a MonoBehaviour class GameManager – Stack Overflow
- GameManager.cs Icon ? – Unity Forum
記事一覧 → Compota-Soft-Press
コメント