https://connect.unity.com/p/pun2deshi-meruonraingemukai-fa-ru-men-sono1
こちらのサイトを参考にして、photonを使ったネット対戦のゲームを作っています。
マッチングの処理には、サイトのものをコピペして以下のコードを使っているのですが、ここで1つ問題が発生しました。
using Photon.Pun; using Photon.Realtime; using UnityEngine; // MonoBehaviourではなくMonoBehaviourPunCallbacksを継承して、Photonのコールバックを受け取れるようにする public class SampleScene : MonoBehaviourPunCallbacks { private GameObject Unkoman; private void Start() { // PhotonServerSettingsに設定した内容を使ってマスターサーバーへ接続する PhotonNetwork.ConnectUsingSettings(); } // マスターサーバーへの接続が成功した時に呼ばれるコールバック public override void OnConnectedToMaster() { // "room"という名前のルームに参加する(ルームが無ければ作成してから参加する) PhotonNetwork.JoinOrCreateRoom("room", new RoomOptions(), TypedLobby.Default); Debug.Log("bb"); } // マッチングが成功した時に呼ばれるコールバック public override void OnJoinedRoom() { // マッチング後、ランダムな位置に自分自身のネットワークオブジェクトを生成する var StartPos = new Vector3(Random.Range(-10f, 10f), 4f, Random.Range(-10f, 10f)); Unkoman = PhotonNetwork.Instantiate("UnkomanEmpty", StartPos, Quaternion.identity); PhotonNetwork.Instantiate("UnkomanCamera", Unkoman.transform.position, Quaternion.identity); Debug.Log("aa"); } }
ゲームでは、スタート画面のシーンとバトル画面のシーンに分かれていて、スタート画面の「Play」というボタンを押すとバトルシーンに遷移してゲームが始まるようになっています。
ここで発生した問題というのは、ゲームを実行してから二回目は「Play」ボタンをクリックしてもネットワークオブジェクトのインスタンス化がされない。というものです。
ゲームを実行し、Start画面のPlayボタンを押すと、一回目はしっかりバトルシーンに遷移し、問題なくゲームが始まります。
ですが、バトルが終わりスタート画面に戻ってからもう一度Playボタンを押すと、プレイヤーのネットワークオブジェクトが生成されず、ゲームが始まりません。
Debug.Logで確認すると、二回目以降にPlayボタンを押した時はコード内2つのログが動いていないことがわかりました。
おそらくこの原因は、一回目のPlayを押したときにマッチング処理が完了したので、その後もう一度Playを押しても既にマッチングが終わった状態で新しくマッチングがされないことだと思います。
なので、バトルが終了してスタート画面に戻るときにマッチングの情報をリセットすれば、この問題は解決すると思うのですが、そのやり方がわかりません。
マッチング情報のリセット的な処理ができるコードを、どなたか教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/26 01:11
2020/07/26 02:27
2020/07/26 06:14