「C#スクリプト名を GameManager にするとアイコンが歯車になるらしい」──そんな噂を見かけて、実際に試したらならない。
今回はその検証記録を整理しました。
結論から言えば、名前だけで歯車には変わりません。
環境や条件によって見え方が違うだけです。
歯車とはどこのアイコンか
Unityの“歯車”という言葉は曖昧です。
少なくとも以下3種類があり、混同されがちです。
- Projectウィンドウでのスクリプトファイルアイコン(通常は紙アイコン)
- Inspectorでコンポーネントを表示したときの左アイコン(デフォルトは歯車に見える)
- HierarchyやScene上のGameObjectアイコン(カメラやライトなど個別に絵がある)
今回のテーマは「Projectのスクリプトファイルが歯車になるかどうか」です。
検証手順
以下の条件を組み合わせてテストしました。
- Unity LTS(2020.3 / 2021.3 / 2022.3 / 6000系)
- 新規3Dプロジェクトで作成
- GameManager.cs として保存、クラス名も一致
- MonoBehaviourを継承
- Consoleエラーなしで実行
- Editorフォルダ内外で配置を比較
- 外部アセット(Photonなど)を導入/未導入で比較
結果の観察
- Project上のスクリプトファイルは常に紙アイコン。名前だけでは変化しない
- Inspectorでアタッチしたときに出る小さなアイコンはデフォルトで歯車
- Editorフォルダに置いたスクリプトは別アイコン(エディタ拡張用)になる
- 外部アセットと同名のGameManagerがあると名前衝突で混乱することがある
なぜ歯車にならないのか
理由はシンプルで、Projectウィンドウのスクリプトアイコンは拡張子で決まるからです。
GameManager という名前は特別扱いされていません。
- MonoBehaviourを継承していなければアタッチできない=歯車に見えないと誤解されやすい
- エラーがあると型情報が反映されず、Inspectorに表示されない
- 外部アセットが同名クラスを持っていると、どの型を指すか分からなくなりやすい
最小のGameManager例
紙アイコンのままでも動けば問題ありません。
using UnityEngine;
public sealed class GameManager : MonoBehaviour
{
public static GameManager Instance { get; private set; }
void Awake()
{
if (Instance != null && Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
DontDestroyOnLoad(gameObject);
}
}
チェックリスト
「歯車にならない=壊れている」ではありません。
以下を確認すれば十分です。
- ファイル名とクラス名が一致しているか
- MonoBehaviourを継承しているか
- Consoleにエラーが出ていないか
- Editorフォルダに置いていないか
- 外部アセットと名前がかぶっていないか
まとめ
GameManagerという名前にしただけではスクリプトが歯車アイコンに変わることはありません。
歯車に見えるのはInspector上のデフォルトアイコンであって、Projectの表示は紙のままが正しい挙動です。
重要なのは「アイコンの形」ではなく「正しくアタッチされ動くかどうか」。
動作に問題がなければ紙のままで安心して使えます。
より体系的にUnityの設計を学びたいなら、Unity入門の森ショップの教材も参考になります。