using System;
using System.Collections;
using System.Collections.Generic;
using Photon.Pun;
using Photon.Realtime;
using UnityEngine;
using UnityEngine.UI;
using Random = UnityEngine.Random;
public class Lobby : MonoBehaviourPunCallbacks
{
public Text Info;
public static Text S_info;
private int _timeOff=1;
public static int networktype;
public void Start()
{
S_info = Info;
networktype++;
ConnectToPhoton();
}
public void ConnectToPhoton()
{
PhotonNetwork.GameVersion = "1.0";
PhotonNetwork.ConnectUsingSettings();
}
public void FixedUpdate()
{
switch (networktype)
{
case 1:
Info.text = $"正在链接服务器({_timeOff}%)";
break;
case 2:
Info.text = $"正在加入大厅({_timeOff}%)";
break;
case 101:
try
{
Info.text = $"创建房间成功!您的房间名为(Test)\n房间人数:{PhotonNetwork.CurrentRoom.PlayerCount};您是拥有者";
networktype = 102;
}
catch (NullReferenceException e)
{
Info.text = $"房间正在创建({((_timeOff>98)? _timeOff : 98)}%)";
if (_timeOff>150)
{
networktype = 0;
Info.text =
"创建房间失败(Connection lost. OnStatusChanged to TimeoutDisconnect. Client state was: ConnectingToGameServer. SCS v0 UDP SocketErrorCode: 0 WinSock)";
}
}
break;
case 102:
Info.text = $"创建房间成功!您的房间名为(Test)\n房间人数:{PhotonNetwork.CurrentRoom.PlayerCount};您是拥有者";
break;
case 201:
try
{
Info.text = $"加入房间成功!您的房间名为(Test)\n房间人数:{PhotonNetwork.CurrentRoom.PlayerCount};您是客人";
networktype = 202;
}
catch (NullReferenceException e)
{
Info.text = $"房间正在加入({_timeOff}%)";
}
break;
case 202:
Info.text = $"加入房间成功!您的房间名为(Test)\n房间人数:{PhotonNetwork.CurrentRoom.PlayerCount};您是客人";
break;
}
int gt = Random.Range(0, 20);
if (gt >16)
{
if (_timeOff<98)
{
_timeOff += Random.Range(1, 3);
}
}
}
public override void OnConnectedToMaster()
{
_timeOff = 0;
networktype++;
Debug.Log("Connected to Photon Server.");
JoinLobby();
}
public void JoinLobby()
{
PhotonNetwork.JoinLobby();
}
public void BTNCRoom()
{
NetworkManager.IsMulitPlayer = true;
CreateRoom("Test",5);
}
public void BNTJRoom()
{
NetworkManager.IsMulitPlayer = true;
JoinRoom("Test");
}
public void GameStart()
{
if (networktype==102)
{
PhotonNetwork.LoadLevel("Bag");
}
}
public void CreateRoom(string roomName, int maxPlayers)
{
if (networktype==0)
{
networktype++;
ConnectToPhoton();
}
PhotonNetwork.AutomaticallySyncScene = true;
networktype = 101;
RoomOptions roomOptions = new RoomOptions
{
MaxPlayers = (byte)maxPlayers
};
try
{
PhotonNetwork.CreateRoom(roomName, roomOptions);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
public void JoinRoom(string roomName)
{
PhotonNetwork.AutomaticallySyncScene = true;
networktype = 201;
PhotonNetwork.JoinRoom(roomName);
}
public override void OnJoinedLobby()
{
_timeOff = 0;
networktype++;
Info.text = "准备完成";
Debug.Log("Joined Lobby.");
// You can perform additional actions here, like creating a room or listing available rooms.
}
public override void OnCreatedRoom()
{
Debug.Log("Room created successfully.");
// You can perform additional actions when the room is created successfully.
}
public override void OnJoinRoomFailed(short returnCode, string message)
{
Debug.LogError("Failed to join room: " + message);
}
}
Unity自用工具.Photon大厅
于 2023-10-04 23:48:42 首次发布