Unity GameManagerのようにアイコンが変化する名前の調べ方

前回は、 Unity で GameManager.cs を作成すると歯車アイコンになる謎を調べてたどり着いた、 Unity 公式フォーラムの回答をもとに、アイコンが変わる他の名前についての確認や、ユーザ自身で特定のファイル名のアイコンを変える方法を紹介しました。

前回の記事:Unity GameManager 同様に特定ファイルのアイコンを変える方法 | Compota-Soft-Press

Unity Gizmos フォルダにスクリプト名(半角スペース)Icon という png ファイルを置くと、その cs ファイルのアイコンが変わります(2)

今回は、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
Unity 本体のフォルダ内の 3 個のファイルをコピーします

コピーした 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 メニューアイテムを選択します。

Unity Project ウィンドウで任意の Resources フォルダで右クリックして Show in Explorer を選びます.

エクスプローラで Resources フォルダに先ほどの .asset をファイル名に追加した 3 個のファイルを貼り付けます。

Unity 本体のフォルダ内の 3 個のファイルをコピーして、Unity プロジェクトの Resources フォルダ内に貼り付けて拡張子.assetを追加します.

Unity エディタを開くと、アセットとして読み込まれます。
※ Console ウィンドウにはエラーメッセージが表示されます。

asset 拡張子を追加した3個のファイルを Unity で確認します.

これで、謎のアセットファイルを Unity エディタで表示できました。

謎のアセットファイルの中身の確認

先ほど追加した 3 個のアセットは、Project ウィンドウでアイコンの右側の三角ボタンを押すことで中身を展開できます。

unity_builtin_extra を展開すると、Unity がデフォルトで持つ UI 用の画像やシェーダーファイルが確認できました。

Unity unity_builtin_extra アセットを展開した結果

unity default resources を展開すると Unity の作品を起動する際に表示されるロゴ画像などが確認できました。

Unity の unity default resources アセットを展開した結果

unity editor resources はスクロールするときにダイアログがたまに表示されるなどして不安定でしたが、後で説明する GameManager 用のアイコン画像などが確認できました。

Unity の unity editor resources アセットを展開した結果

謎のアセット内でのアイコン画像の検索

Project ウィンドウの検索ボックスに GameManager と入力すると、自身で作成した GameManager.cs とそれに対応するアイコン画像 (GameManager Icon) の Texture 2D がアセットが見つかりました。
アイコン画像は unity editor resources の中にあるようです。

Unity の Project ウィンドウで GameManager で検索すると unity editor resources アセット内にアイコン画像が見つかりました

Project ウィンドウの検索ボックスで Icon と入力すると、 GameManager の他に、前回紹介した Folder などのアイコン画像も見つかりました。
この検索結果の中の「アセット名 Icon」の形式の名前のアセットが、そのアセット名のアイコン画像に対応しているようです。

Unity の Project ウィンドウで Icon で検索すると unit editor resources アセット内などに他の同じ形式の名前の画像ファイルが表示されました.

これで、アイコンが変わる特殊な名前を確認することができましたが、Unity エディタの Console ウィンドウではエラーがたくさん表示されるので、確認する際は空のプロジェクトなどを作成して自己責任で行ってください。

Unity の unity editor resources などを asset として展開するとエディタ上でエラーが発生します.

アイコンが変わる特殊なファイル名を列挙するプログラム

先ほど行った Unity 本体のフォルダ内にあるアセットファイルを、プログラムで読み取り、アイコンに対応するファイル名を列挙するプログラムが公開されていました。
※プログラムの使用は自己責任です。

上記のリンク先のプログラムを 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 翻訳
Unity フォーラムで GameManager アイコンの質問に対して名前空間を使うべきだとする主張2

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!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました