Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using Hashtable = ExitGames.Client.Photon.Hashtable;
public class ConnectMenu : Photon.MonoBehaviour
{
public GameObject playerPrefab;
public string roomName = "PlayerRoom";
public string mapName = "Player";
RoomInfo[] roomsList = new RoomInfo[0];
string roomVersion = "Alpha HL2DM v0.1";
IEnumerator JoinOrCreate(string _roomName, string _mapName, int maxPlayers, bool gameMode, int timeRound)
{
while (!PhotonNetwork.connected)
{
if (PhotonNetwork.connectionState != ConnectionState.InitializingApplication && PhotonNetwork.connectionState != ConnectionState.Connecting &&
PhotonNetwork.connectionState != ConnectionState.Disconnecting && PhotonNetwork.connectionState != ConnectionState.Connected)
{
PhotonNetwork.ConnectUsingSettings(roomVersion);
}
yield return null;
}
yield return new WaitForSeconds(0.5f);
//PhotonNetwork.playerName = "Player" + Random.Range(0, 9999).ToString();
if (PhotonNetwork.connected)
{
Hashtable roomProperties = new Hashtable();
roomProperties["mapName"] = _mapName;
roomProperties["gameMode"] = gameMode;
roomProperties["gameTime"] = timeRound;
string[] exposedProps = new string[3];
exposedProps[0] = "mapName";
exposedProps[1] = "gameMode";
exposedProps[2] = "gameTime";
RoomOptions roomOptions = new RoomOptions();
roomOptions.CleanupCacheOnLeave = true;
roomOptions.IsOpen = true;
roomOptions.IsVisible = true;
roomOptions.MaxPlayers = (byte)maxPlayers;
roomOptions.CustomRoomProperties = roomProperties;
roomOptions.CustomRoomPropertiesForLobby = exposedProps;
PhotonNetwork.JoinOrCreateRoom(_roomName, roomOptions, null);
}
else yield return null;
}
void Start()
{
DontDestroyOnLoad(this);
this.StopAllCoroutines();
}
void Update()
{
}
void OnGUI()
{
if (GUI.Button(new Rect(50, Screen.height - 100, 100, 25), "Создать"))
StartCoroutine(JoinOrCreate(roomName, mapName, 16, false, 30));
/* это будет кнопкой подключения, но пока не используется
if (roomsList.Length > 0)
if (GUI.Button(new Rect(50, Screen.height - 75, 100, 25), "Подключиться к " + roomsList[].Name))
StartCoroutine(JoinOrCreate(roomsList[].Name, (string)roomsList[].CustomProperties["mapName"], roomsList[].MaxPlayers,
(bool)roomsList[].CustomProperties["gameMode"], (int)roomsList[].CustomProperties["gameTime"]));
*/
if (GUI.Button(new Rect(50, Screen.height - 50, 100, 25), "Поиск"))
OnReceivedRoomListUpdate();
GUI.Label(new Rect(15, 15, Screen.width, 25), "Количество найденных серверов: " + roomsList.Length);
}
void OnJoinedRoom()
{
print("Done joining/creating new room");
PhotonNetwork.isMessageQueueRunning = false;
SceneManager.LoadScene((string)PhotonNetwork.room.CustomProperties["mapName"]);
}
void OnReceivedRoomListUpdate()
{
roomsList = PhotonNetwork.GetRoomList();
Debug.Log(roomsList.Length);
}
void OnLevelWasLoaded(int level)
{
if (level > 0)
{
PhotonNetwork.Instantiate(playerPrefab.name, Vector3.up, Quaternion.identity, 0);
}
}
}
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using Hashtable = ExitGames.Client.Photon.Hashtable;
public class ConnectMenu : Photon.MonoBehaviour
{
public GameObject playerPrefab;
public string roomName = "PlayerRoom";
public string mapName = "Player";
RoomInfo[] roomsList = new RoomInfo[0];
string roomVersion = "Alpha HL2DM v0.1";
IEnumerator JoinOrCreate(string _roomName, string _mapName, int maxPlayers, bool gameMode, int timeRound)
{
while (!PhotonNetwork.connected)
{
if (PhotonNetwork.connectionState != ConnectionState.InitializingApplication && PhotonNetwork.connectionState != ConnectionState.Connecting &&
PhotonNetwork.connectionState != ConnectionState.Disconnecting && PhotonNetwork.connectionState != ConnectionState.Connected)
{
PhotonNetwork.ConnectUsingSettings(roomVersion);
}
yield return null;
}
yield return new WaitForSeconds(0.5f);
//PhotonNetwork.playerName = "Player" + Random.Range(0, 9999).ToString();
if (PhotonNetwork.connected)
{
Hashtable roomProperties = new Hashtable();
roomProperties["mapName"] = _mapName;
roomProperties["gameMode"] = gameMode;
roomProperties["gameTime"] = timeRound;
string[] exposedProps = new string[3];
exposedProps[0] = "mapName";
exposedProps[1] = "gameMode";
exposedProps[2] = "gameTime";
RoomOptions roomOptions = new RoomOptions();
roomOptions.CleanupCacheOnLeave = true;
roomOptions.IsOpen = true;
roomOptions.IsVisible = true;
roomOptions.MaxPlayers = (byte)maxPlayers;
roomOptions.CustomRoomProperties = roomProperties;
roomOptions.CustomRoomPropertiesForLobby = exposedProps;
PhotonNetwork.JoinOrCreateRoom(_roomName, roomOptions, null);
}
else yield return null;
}
void Start()
{
DontDestroyOnLoad(this);
this.StopAllCoroutines();
}
void Update()
{
}
void OnGUI()
{
if (GUI.Button(new Rect(50, Screen.height - 100, 100, 25), "Создать"))
StartCoroutine(JoinOrCreate(roomName, mapName, 16, false, 30));
/* это будет кнопкой подключения, но пока не используется
if (roomsList.Length > 0)
if (GUI.Button(new Rect(50, Screen.height - 75, 100, 25), "Подключиться к " + roomsList[].Name))
StartCoroutine(JoinOrCreate(roomsList[].Name, (string)roomsList[].CustomProperties["mapName"], roomsList[].MaxPlayers,
(bool)roomsList[].CustomProperties["gameMode"], (int)roomsList[].CustomProperties["gameTime"]));
*/
if (GUI.Button(new Rect(50, Screen.height - 50, 100, 25), "Поиск"))
OnReceivedRoomListUpdate();
GUI.Label(new Rect(15, 15, Screen.width, 25), "Количество найденных серверов: " + roomsList.Length);
}
void OnJoinedRoom()
{
print("Done joining/creating new room");
PhotonNetwork.isMessageQueueRunning = false;
SceneManager.LoadScene((string)PhotonNetwork.room.CustomProperties["mapName"]);
}
void OnReceivedRoomListUpdate()
{
roomsList = PhotonNetwork.GetRoomList();
Debug.Log(roomsList.Length);
}
void OnLevelWasLoaded(int level)
{
if (level > 0)
{
PhotonNetwork.Instantiate(playerPrefab.name, Vector3.up, Quaternion.identity, 0);
}
}
}