【问题标题】:CreateRoom failed. Client is on MasterServer创建房间失败。客户端在 MasterServer 上
【发布时间】:2022-11-10 23:56:39
【问题描述】:

当我尝试创建房间时,没有任何反应,并且标题有错误。我应该怎么办?

如果可能,那么写下具体应该替换的内容。

完整错误:

创建房间失败。客户端在 MasterServer 上(必须是 Master Server 才能进行匹配)但尚未准备好操作(状态:PeerCreated)。等待回调:OnJoinedLobby 或 OnConnectedToMaster。

UnityEngine.Debug:LogError(对象)

Photon.Pun.PhotonNetwork:CreateRoom (string,Photon.Realtime.RoomOptions,Photon.Realtime.TypedLobby,string[]) (在 Assets/Photon/PhotonUnityNetworking/Code/PhotonNetwork.cs:1782)

MenuManagerScript:CreateRoom () (在 Assets/MenuManagerScript.cs:15)

UnityEngine.EventSystems.EventSystem:Update () (在 Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:385)

完整代码:

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Photon.Pun;
using Photon.Realtime;

public class MenuManagerScript : MonoBehaviourPunCallbacks
{
    public InputField createInput;
    public InputField joinInput;
    public void CreateRoom() {
        RoomOptions roomOptions = new RoomOptions();
        roomOptions.MaxPlayers = 4;
        PhotonNetwork.CreateRoom(createInput.text, roomOptions);
    }
    public void JoinRoom() {
        PhotonNetwork.JoinRoom(joinInput.text);
    }
    public override void OnJoinedRoom() {
        PhotonNetwork.LoadLevel("Game");
    }
}
I take code from this video: https://youtu.be/IfP5ChmhVFk?t=485

【问题讨论】:

    标签: unity3d multiplayer photon


    【解决方案1】:

    这是我的光子网络代码

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using Photon.Pun;
    
    public class NetworkManager : MonoBehaviourPunCallbacks
    {
        public static NetworkManager instance;
    
        public override void OnConnectedToMaster()
        {
            Debug.Log("Connected to master server");
            CreateRoom("testroom");
        }
    
        public override void OnCreatedRoom()
        {
            Debug.Log("Created room: " + PhotonNetwork.CurrentRoom.Name);
        }
    
        void Start()
        {
            Debug.Log(" started");
            PhotonNetwork.ConnectUsingSettings();
        }
    
        public void CreateRoom(string roomName)
        {
            PhotonNetwork.CreateRoom(roomName);
        }
    
        public void JoinRoom(string roomName)
        {
            PhotonNetwork.JoinRoom(roomName);
        }
    
        public void ChangeScene(string sceneName)
        {
            PhotonNetwork.LoadLevel(sceneName);
        }
    }
    

    【讨论】:

    • 您可以调用 PhotonNetwork.JoinLobby();而不是 OnConnectedToMaster 回调上的 CreateRoom("testroom"),然后让玩家创建自己的房间,而不是每个人都加入同一个名为“testroom”的房间。
    【解决方案2】:

    在尝试创建或加入任何房间之前,您想要连接。 PUN 包含一个非常简单的脚本,可以让您轻松进入一个随机房间。查看ConnectAndJoinRandom 组件。

    【讨论】:

      【解决方案3】:

      对我来说问题是因为加载时默认场景是大厅,您需要在加载之前切换到加载场景,以便它可以正确连接到大厅

      基本上只是在玩之前切换到加载场景

      【讨论】:

      • 感谢您添加该解决方案。您可以通过在播放之前解释如何切换加载场景来使您的答案更好,或者如果可能的话添加一些反映这一点的代码。
      【解决方案4】:

      我仍然有这个问题有人可以帮忙吗? 从here 获取代码

      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      using UnityEngine.UI;
      using Photon.Pun;
      
      public class CreateAndJoinGroups : MonoBehaviourPunCallbacks
      {
      
          public InputField createInput;
          public InputField joinInput;
      
      
          public void CreateRoom()
          {
              PhotonNetwork.CreateRoom(createInput.text);
          }
      
          public void JoinRoom()
          {
              PhotonNetwork.JoinRoom(joinInput.text);
          }
      
          public override void OnJoinedRoom()
          {
              PhotonNetwork.LoadLevel("SampleScene");
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-13
        • 1970-01-01
        • 2021-07-25
        • 2018-02-02
        • 1970-01-01
        相关资源
        最近更新 更多