Unity2018.2あたりからScreenPointToRayメソッドを使うと、NullReferenceExceptionのエラーが出てしまうことがあるようです。
NullReferenceException: Object reference not set to an instance of an object
原因と対策
ScreenPointToRayメソッドを使う場合、だいたい次のように記述していると思います。
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
「Camera.main」と書くことでMainCameraタグがついたゲームオブジェクトを検索してCameraコンポーネントを取得しています。「Camera.main」の部分は次のプログラムと同じ意味ですね。
GameObject.FindWithTag(“MainCamera”).GetComponent<Camera>();
ただUnity2018.2からは、Main CameraのタグがデフォルトではUntaggedに設定されています。
したがって、シーン中からカメラオブジェクトが見つからず、NullReferenceExceptionのエラーが出ることになります。
これを防ぐには、ヒエラルキーウインドウでMain Cameraを選択し、インスペクタのTagをMainCameraに再設定して下さい。
Unityの教科書でも7章、8章でScreenPointToRayメソッドを使っているため、ここでnullexceptionエラーが出る可能性かあります。
その場合は、上で書いたように、Main CameraのタグをMainCameraに設定しなおしてから、再度お試しください。