あなたがそのDont Destroy On Load
プロパティセットで、ロビーのシーンでゲームオブジェクトN
上にNetworkManagerを持っています。 また、別のGameObject R
がシーン内にあり、N
を参照しています。
今、この問題が発生した:
- ゲームは、あなたが原因のゲームオブジェクト
N
除い "Lobby.scene" のすべて(
-
ログイン で "Lobby.scene"
- である
- を開始しますDontDestroyOnLoad)が破棄されます。
- NetworkManagerの負荷シーン "Game.scene"
- ゲーム(ためDontDestroyOnLoadの)
N
除い "Game.scene" のすべてが破壊され
- ログアウト でしばらく
- のために実行されます。
- NetworkManagerの負荷シーン「Lobby.scene」のオリジナルが破壊されなかったとして、あなたは今、2つのゲームオブジェクト
N
#1とNetworkManagerでN
#2を持っているが、あなたはまた、「Lobby.scene」から新しいインスタンスをロード
R
は "Lobby.scene" との言及からロードされたN
#2
- のNetworkManager#2は、すでに他のNetworkManagerがあることを検出し、自身とそのゲームオブジェクト
N
#2
- を破壊し、その
Awake()
を実行しますN
#2は、もはや「開発者」へのあなたのNetworkManagerにLogLevel
を設定することにより、
あなたは、これが問題であることを確認することができますが存在するとして、210は現在、行方不明の参照を持っていません。ロビーに戻った後、あなたのコンソールで次のログ出力が表示されます。通常は、すべてのシーンでNetworkManagerをしたが、ゲームの起動時にコードから、それをインスタンス化されていないこの問題の
Multiple NetworkManagers detected in the scene. Only one NetworkManager can exist at a time. The duplicate NetworkManager will not be used.
私のソリューション。そうすれば、私はその生涯にわたって完全な支配権を得ることができます。
シーンがデータを保持していると想定されていないため、オブジェクトが読み込まれたままになっていると頭痛を引き起こします。 Netowrk Managerが重複していないことを確認してください(またはインスタンス化しようとしている既存のインスタンスのデータを上書きしてください)。 – Draco18s
私はちょうど、ユニティが_NETMANAGER_という空のゲームオブジェクトにコンポーネントとして追加したnetworkmanagerスクリプトを手に入れました。何らかの理由で、ロビーからゲームに切り替えるときにすべて同じ状態を保ちますが、ゲームを離れてロビーに戻るときnetworkmanagerオブジェクトにアタッチされたHostGameスクリプトは、それらの空のスクリプトの1つに変わります。 –