非常にハマってしまったので、メモで残しておきたいと思う。
何をやりたかったかというと、UnityのStandard Asset内にある、FPS用のプレハブ「FPSController」を使って、FPSゲームを作ろうと思っていた。しかし、このプレハブにアタッチされているスクリプト「FirstPersonController.cs」内を編集しようとしたときに問題が発生した!GameManagerクラスを自作し、このクラスをシングルトンにしていて、このクラス内の変数に 「FirstPersonController.cs」 内でアクセスしようと思っても、アクセスできなかったのだ。原因は非常にシンプルだった。「Standard Assets」というフォルダ名は特殊フォルダーになるらしく、自作スクリプトよりも先にコンパイルされるらしい。そのため自作スクリプトへはアクセスできないということだった。
https://docs.unity3d.com/ja/current/Manual/ScriptCompileOrderFolders.html
対策としては以下2つが考えられる。
①フォルダ名「Standard Assets」を別のフォルダ名に変更してしまう。
②フォルダ「Standard Assets」内にある使いたいスクリプトだけを別フォルダへ移動する
自分は今回は①の方法で解決した。