Я написал свой скрипт 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;
}
}
}
}
}