事象
プログラムをオブジェクトにアタッチするときは、プロジェクトビューにあるスクリプトをオブジェクトに持ってくるが、
何をやっても以下のようなエラーが出てしまう。
こういうパターン懐かしいなって思ってググったら「ファイル名とプログラムの中のクラス名が一致していない」ことが原因みたいな記事ばっかり出てきて、
「それは知ってるわ!一致してるのに何故かアタッチできないんや!」って気持ちになった。
●以下試したこと
➡reimport
➡Unity再起動
➡PC再起動
➡スクリプト新規作成でコピペ
➡スクリプトの変更が自動更新(Auto Refresh)になっていることを確認。これはデフォルトでそうなってるはずで、そもそもこの設定を変えるメリットってなんやって感じ
異変に気付く
今作ってアタッチしようとしてるプログラムではなく、試しに過去に作成していたプログラムを少しいじって修正してみても、何も変わらないことに気づいた。
「あ、これ今から作ろうとしてるプログラムだけじゃなくて今までのプログラムも全部修正が出来なくなってるな」と。
Unityの設定で自動反映(Auto Refresh)にもなってるにも関わらず、変わらないってことは、これは他に原因がありそう
解決方法
コンソールを見たらエラーがめっちゃ出ていた。
業務とかだったら1つでもエラーが出てたら必ず無くすことが当たり前だと思いますが、僕はゲーム開発は趣味なのと、そもそもUnityをゲーム開発を目的に使っていないのもあって、インポートしたアセットがエラーが出ててもスルーしてました(ゲーム開発を目的でやっていた学生時代はもちろんエラーは無くしていましたが笑)
なので、使ってないアセットの中のプログラムでめっちゃエラーが出ていたので、そのアセットフォルダ全部消したら、エラーは全て無くなって、
その後にスクリプトをアタッチしようとしたら、
できた!!!!
なるほど、何かしらエラーが出たらそれらを修正するまでこういうことが起こるのか、まあ納得はいく。
結論
何やってもうまくいかない問題は、たいていPCやソフトを再起動したら直ることが多いですが、それでもうまくいかないときは、どこかエラーが出てるかもって思うと良い