i-school - 複数の参照型変数がエラーの原因となる場合の対処方法
 UnityでC#スクリプトを書いている際、エラーの該当行に複数の参照型変数が存在する場合があります
そのような状況でエラーに該当する変数を見つけるまでの考え方をサンプルコードを交えて説明します。



エラーの該当行に複数の参照型変数がある場合


 以下のサンプルコードは、エラーの該当行に複数の参照型変数が存在する典型的な例です。


 このコードでは、target1 と target2 という名前の2つのGameObjectがパブリック変数として宣言されており、インスペクターからアサインできます。
しかし、これらのオブジェクトがどちらかまたは両方がアサインされていない場合や、アサインされたオブジェクトが破棄された場合
Update()メソッド内の

  Vector3.Distance(target1.transform.position, target2.transform.position);

 ここで Missing エラーが発生します。


エラーの原因となる変数を見つける方法


 Console ビューにはエラーに該当するスクリプトと行数が表示されますが、
この表示ではどの変数に置いて Missing が発生しているか、までは教えてくれません

 そこで、エラーの原因となる変数を見つけるためには、以下の手順で調査していきます。


方法1: 変数ごとにNullチェックを行う


 各参照型変数に対して個別にNullチェックを行い、どの変数が問題を引き起こしているか特定します。


 このコードでは、target1とtarget2がそれぞれnullでないことを確認しています。
nullの場合、対応する警告メッセージを表示して処理を中断します。これにより、どの変数が問題を引き起こしているかを特定できます


方法2: デバッグログを使用して変数の状態を確認する


 デバッグログを使用して、各変数の状態を確認し、エラーの原因となる変数を特定します。


 このコードでは、Debug.Log()メソッドを使用して、各変数の状態を確認しています。
これにより、どの変数が問題を引き起こしているかを特定できます


まとめ


 エラーの該当行に複数の参照型変数が存在する場合でも、適切なエラーチェックやデバッグログを使用して問題の特定と対処が可能です。

 初心者の方でも、このような手法を使用することで、エラーの原因となる変数を見つけることができます。これらの方法を実践して、エラーの解決に取り組みましょう。