Null Reference Exception というのは、まずそれぞれを漢字に翻訳すると次の意味になります。
Null = 空値
Reference = 参照
Exception = 例外
Null(ナル)は一般的には使わない概念ですが、プログラミングではよく出てくる概念なので覚えておくとよいでしょう。
※これを"ヌル"と間違った呼び方をする人が多いので注意してください。英語の発音としてはヌルよりもはるかにナルに近いものとなります。日本ではこれを漢字に直さずそのまま null として使用するのが普通です。
さて、この null は、何もないという意味ではありますが、0、零、ゼロではありません。
そもそも存在しないもの、ということになります。
ということでこのエラーは「存在しないものを参照しようとしたので例外となった」という意味になります。
次の「Object reference not set to an instance of an object」は、エラーの補足となります。
これは「オブジェクト参照は、オブジェクトのインスタンスとして設定されていません。」と訳されます。
これらを合わせると、「オブジェクトのインスタンスを参照しようとしたけれども、参照しようとしたものがないのでエラーになった。」という意味になります。
ここで「インスタンス」とは何かを簡単な言葉で説明するにはとてもこの回答欄では足りないので、ご自分で調べて勉強してください。
ということで、ここでわかることは、**オブジェクトのインスタンスを指定しなければならなかったにもかかわらず、指定していなかったのでエラーになった、**ということです。
では実際プログラムの中では何を治せばよいのかについてですが、プログラム全体が解らないのでここでは正確に答えることはできません。
しかし、原因はおそらくですがGameManegerというオブジェクトが存在していないではしょうかと、推定します。もしくはGameManegerにGemeManagerというスクリプト(コンポーネント)がアタッチされていないかです。また、スペルミスの可能性も考えられます。
その場合、とにかく以下の行
gameManager = GameObject.Find("GameManager").GetComponent<GameManager>();
でGameManagerを検索・取得しますが、存在しないので変数gameManagerには、null が入ります。
そして、gameManager.Addscore(100); でAddscoreメソッドを実行しようとしたときに gameManagerは null なので存在しないものを参照しようとしたのでエラーになる、といった感じかと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/08 04:00
2022/01/08 04:21 編集
2022/01/08 04:27
2022/01/08 04:39