Lobby機能を使ってマルチプレイゲームへの参加準備をする[Unigy]
プログラミングを勉強している中1です。 動画とサイトを拝見しながらマルチプレイのつくりかたについて勉強させていただいています。 動画内で教えていただいた範囲はうまくいっているのですが、 追加で以下のようにロビーから退出するコードを書いてみたところうまくいきません。 Clientで退出しようとするとjoinedlobby.IdでNullReflenceが出てしまいます。 なぜかHostだけは成功しています。 どうすればClient側で正常に退出できるのかをサイトなどで追加で解説していただけると助かります。よろしくお願いいたします。 public async void leavelobby() try string playerid = AuthenticationService.Instance.PlayerId; string lobbyid = joinedlobby.Id; Debug.Log(playerid); if(ishost) await LobbyService.Instance.RemovePlayerAsync(lobbyid, playerid); >else await LobbyService.Instance.RemovePlayerAsync(lobbyid,playerid); > joinedlobby = null; >catch(LobbyServiceException e) Debug.Log(e); > >
watanabe より:joinedlobby変数に、入っているロビーのインスタンスが代入されてないからだと思います。 おそらくメンバ変数にjoinedlobbyを準備していると思うのですが、JoinLobbyメソッドの引数をメンバ変数のjoinedlobbyに代入してあげると解決すると思います。 hostだけうまくいくのは、CreateLobby系の処理で、joinedlobbyにロビー作成時のインスタンスを代入しているからだと推察します。 RemovePlayerAsyncに必要なのはLobbyIDの文字列なので、ロビーに参加したときに参加中のロビーのIDだけ取得しておくだけでも構いません。