++Start()はDontDestroyOnLoadしていてもシーン移動時に毎回実行されるが、シーンのロード前に実行されてしまっているっぽい。なので、Start()でシーンによって処理を分岐すると正常に機能しない。
なので、シーン移動のコールバックに処理を書くべき
http://nn-hokuson.hatenablog.com/entry/2017/05/29/204702
OnSceneLoaded直後にそのシーンのオブジェクトをGameObject.Findしようとすると、発見できない場合がある。Invoke等で遅延させれば取得出来る
void OnSceneLoaded(Scene scene, LoadSceneMode mode){ if(scene.name=="VsPlayerBattle") Invoke("DelayGet",2); } //なぜかOnSceneLoaded直後に実行するとGameStartReadyを発見できない void DelayGet(){ var obj = GameObject.Find("GameStartReady"); if(obj==null){ Invoke("DelayGet",2); }else{ GSR = obj.GetComponent(); } }