Unity : generate same script of GameObject when change scene ? NetworkManager.Singleton.SceneManager.LoadScene で遷移したときに gameobjectのscriptが2回が呼ばれている。

Unity

Relayで対戦するゲームを作っているのですが

結論は … ですが
NetworkManager.Singleton.SceneManager.LoadScene

でシーンを移動したときに同じ gameobject が2つ生成されてはいないのですが
MonoBehaviour の script が 2回呼ばれて…困っていました…

まずデータがおかしいことに気づいたのですが…
よく見ると AwakeやStartも2回呼ばれていて…

しかしそのscriptを付けているgameobjectが2つあるわけではなく…

…まったく気づかなかったのですが

結論としては

NetworkManager.Singleton.SceneManager.LoadScene(“next scene name”)

が2回呼ばれていました…
ステータスが変わったら呼ばれるようにしていただけですが、そこが2回呼ばれていて
Relayを使わない Local対戦では速度的に問題なかった(ごまかされていた)ようですが
Relayを使うと同期に時間がかかるというか微妙にズレを待つ時間があるので。
2回呼ばれる時間があったようです。

しかし、他の粗も修正できたので良しとしましょう///

  1. playerの準備 1
  2. stage準備 1
  3. player 準備 2 準備OK
  4. stage準備 2 準備OK
  5. ゲーム開始

となっていて、この 1, 2, 3, 4, の間で UniTaskで待ちを入れて 2つの端末で同期を取っているのですが
やっているうちによく分からなくなります^^;

お気軽にコメントください!

スパム対応のためコメント認証に数日かかることがありますが、お気軽にコメントいただけると嬉しいです^^

コメント

タイトルとURLをコピーしました