Photon создает новую комнату для каждого игрока

Я написал свой скрипт Photon так, чтобы игрок присоединялся к случайной комнате, и если комната не была найдена, игрок автоматически создавал новую комнату. Однако, когда я создаю и запускаю свою игру на двух разных компьютерах, на них обоих нет места, поэтому они оба создают свои собственные комнаты. Пожалуйста, может кто-нибудь сказать мне, почему?

Игра начинается так, как должна, когда требуется только 1 игрок, но когда требуется 2, это не так из-за проблемы, о которой я упоминал выше.

using UnityEngine;
using System.Collections;

public class NetworkManager : Photon.PunBehaviour
{

public string playerprefabname = "player";
Vector3 spawner = new Vector3(9.9f, -3.8f, -0.1f);


// Use this for initialization
void Start()
{

    //Log stuff to console
    PhotonNetwork.logLevel = PhotonLogLevel.Full;

    //Connect
    PhotonNetwork.ConnectUsingSettings("v0.1");

    //Sync scenes
    PhotonNetwork.automaticallySyncScene = true;

}

//Display connection state on game
void OnGUI()
{
    GUILayout.Label(PhotonNetwork.connectionStateDetailed.ToString());
}


public override void OnConnectedToMaster()
{
    PhotonNetwork.JoinLobby();
}

public override void OnJoinedLobby()
{
    PhotonNetwork.JoinRandomRoom();
}

//Create a room if fail to join one
void OnPhotonRandomJoinFailed()
{
    Debug.Log("Can't join random room!");
    RoomOptions roomOptions = new RoomOptions() { isVisible = false, maxPlayers = 2 };
    PhotonNetwork.CreateRoom(null, roomOptions, TypedLobby.Default);
}

// when joined to a room check if 3 players are there, then send to level
public override void OnJoinedRoom()
{
    if (PhotonNetwork.playerList.Length == 2)
    {
        Debug.Log("2 Players In Room Starting Level");

        GameObject myPlayer = PhotonNetwork.Instantiate(playerprefabname, spawner, spawnpoint.rotation, 0);

        //GameObject MyCam = PhotonNetwork.Instantiate ("Camera", CamPos, Quaternion.identity, 0);
        GameObject camera = GameObject.FindWithTag("MainCamera");

        if (camera != null)
        {
            CameraController followScript = camera.GetComponent("CameraController") as CameraController;
            if (followScript != null)
            {
                followScript.target = myPlayer;
            }
        }

    }
}

public override void OnPhotonPlayerConnected(PhotonPlayer newPlayer)
{
    if (PhotonNetwork.playerList.Length == 2)
    {
        Debug.Log("2 Players In Room Starting Level");

        GameObject myPlayer = PhotonNetwork.Instantiate(playerprefabname, spawner, spawnpoint.rotation, 0);

        //GameObject MyCam = PhotonNetwork.Instantiate ("Camera", CamPos, Quaternion.identity, 0);
        GameObject camera = GameObject.FindWithTag("MainCamera");

        if (camera != null)
        {
            CameraController followScript = camera.GetComponent("CameraController") as CameraController;
            if (followScript != null)
            {
                followScript.target = myPlayer;
            }
        }

    }
}

}


person zigg76    schedule 19.10.2015    source источник


Ответы (2)


Причина в том, что для параметра isVisible установлено значение false при создании комнаты. Из-за этого комната не отображается в списке комнат и не может быть выбрана случайным образом.

person photonians    schedule 20.10.2015

были ли компьютеры подключены друг к другу через локальную сеть или по беспроводной сети? он создает комнату, когда нет связи между двумя компьютерами.

person Anuj    schedule 19.10.2015
comment
Оба компьютера подключены к одному и тому же Интернету (один по кабелю Ethernet, а другой по беспроводной сети) - person zigg76; 19.10.2015
comment
вам следует сделать опцию «Устроить игру» и «Присоединиться к игре», потому что она не будет выполнять автоматический поиск, если только оба компьютера не подключены либо через локальную сеть, либо через беспроводную сеть. Поэтому сделайте два варианта: Хостинг игры и Присоединение к игре. Хостинг позволит игроку разместить игру, чтобы его/ее друг мог напрямую присоединиться к игре и наоборот для присоединения. Не уверен насчет кодов, но попробуйте сделать эти два варианта. - person Anuj; 19.10.2015
comment
Но как работает моя игра: кто-то нажимает «Играть в многопользовательскую игру», затем он просто сопоставляет их с противниками через Интернет, затем, когда в комнате 4 игрока, игра начинается, так что это невозможно? - person zigg76; 19.10.2015
comment
Хочешь сватовства? Вы проверили, могут ли компьютеры общаться без проблем? все необходимые порты открыты? - person JSantos; 19.10.2015
comment
Это не локально, игроки подключаются к фотонному серверу, поэтому я не знаю, почему не работает - person zigg76; 19.10.2015