前提・実現したいこと
オンラインでロビーに参加するとバトルシーンに遷移し,Sceneスクリプトが起動しキャラクターが生成される。プレイヤーが集まりゲームが開始するまでキャラクターを操作できないようにしたいのでキャラクターについているスクリプトを非アクティブ状態にしたい
発生している問題・エラーメッセージ
C#
1NullReferenceException: Object reference not set to an instance of an object 2Scene.Start () (at Assets/C#script/Scene.cs:41) 3 4※41行はgameObject1.GetComponent<move_Online>().enabled = false;です
該当のソースコード
C#
1using UnityEngine; 2using UnityEngine.SceneManagement; 3using Photon.Pun; 4 5public class Scene : MonoBehaviourPunCallbacks 6{ 7 GameObject gameObject1; 8 GameObject gameObject2; 9 10 void Awake() 11 { 12 var v = new Vector3(-5.5f, 0.5f, -3.5f); 13 var v2 = new Vector3(5.5f, 0.5f, 3.5f); 14 15 if (!PhotonNetwork.IsConnected) //Phootnに接続されていなければ 16 { 17 SceneManager.LoadScene("MultiMode"); //ログイン画面に戻る 18 return; 19 } 20 if (PhotonNetwork.PlayerList.Length == 1) 21 { 22 PhotonNetwork.Instantiate("GamePlayer", v, Quaternion.identity); 23 24 } 25 else if (PhotonNetwork.PlayerList.Length == 2) 26 { 27 PhotonNetwork.Instantiate("GamePlayer2", v2, Quaternion.identity); 28 } 29 30 } 31 32 void Start() 33 { 34 gameObject1 = GameObject.Find("GamePlayer"); 35 Debug.Log(gameObject1); 36 gameObject1.GetComponent<move_Online>().enabled = false; 37 gameObject1.GetComponent<Shoot_Online2>().enabled = false; 38 39 gameObject2 = GameObject.Find("GamePlayer2"); 40 gameObject2.GetComponent<move_Online>().enabled = false; 41 gameObject2.GetComponent<Shoot_Online2>().enabled = false; 42 43 } 44}
試したこと
同じStart()内でGamePlayerの生成とコンポーネントの取得をしているのが原因なのではないかと思い,
void Awake()で生成,void Start()でオブジェクトを取得しそのスクリプトを取得しようとしたが同じ結果になった
補足情報(FW/ツールのバージョンなど)
Unity 2019.4.11f
あなたの回答
tips
プレビュー