创建房间失败。客户端位于 MasterServer 上

问题描述 投票:0回答:5

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

如果可以的话,写出具体应该更换的内容。

完整错误:

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

UnityEngine.Debug:LogError(对象)

Photon.Pun.PhotonNetwork:CreateRoom(字符串,Photon.Realtime.RoomOptions,Photon.Realtime.TypedLobby,字符串[])(位于Assets / Photon / PhotonUnityNetworking / Code / PhotonNetwork.cs:1782)

MenuManagerScript:CreateRoom ()(位于 Assets/MenuManagerScript.cs:15)

UnityEngine.EventSystems.EventSystem:Update ()(位于 Library/PackageCache/[email protected]/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
unity-game-engine multiplayer photon
5个回答
0
投票

这是我的光子网络代码

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);
    }
}

0
投票

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

ConnectAndJoinRandom
组件。


0
投票

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

基本上只需在玩之前切换到加载场景即可


0
投票

在编辑器中点击“播放”之前,必须将场景更改为连接到服务器的场景,即具有功能

PhotonNetwork.ConnectUsingSettings()
的场景。

成功连接服务器后,

createRoom()
功能应该可以使用。


0
投票

几个小时后,我意识到我的代码有一个问题:由于某种原因,当我尝试在大厅中将两个游戏连接在一起时,它出错了,在查看了很多帖子(其中没有任何帮助)后,我意识到我的两个游戏都连接到了不同的区域。这意味着这两个游戏无法连接,因此要解决此问题,您可以转到大厅代码并输入启动函数:PhotonNetwork.ConnectToRegion("your Region")
希望这对某人有帮助

© www.soinside.com 2019 - 2024. All rights reserved.