<pre name="code" class="csharp">using UnityEngine;
using System.Collections;
public class MainMenuVik : Photon.MonoBehaviour
{
void Awake()
{
//PhotonNetwork.logLevel = NetworkLogLevel.Full;
//Connect to the main photon server. This is the only IP and port we ever need to set(!)
if (!PhotonNetwork.connected)
PhotonNetwork.ConnectUsingSettings("v1.0"); // version of the game/demo. used to separate older clients from newer ones (e.g. if incompatible)
//Load name from PlayerPrefs
// 获取用户名
PhotonNetwork.playerName = PlayerPrefs.GetString("playerName", "Guest" + Random.Range(1, 9999));
//Set camera clipping for nicer "main menu" background
// 设置摄像机的范围
Camera.main.farClipPlane = Camera.main.nearClipPlane + 0.1f;
}
//设置初始化名称
private string roomName = "myRoom";
private Vector2 scrollPos = Vector2.zero;
void OnGUI()
{
if (!PhotonNetwork.connected)
{
//如果没有连接成功,那么就显示这个界面
ShowConnectingGUI();
return; //Wait for a connection 返回最初状态 ,等待连接
}
if (PhotonNetwork.room != null)
return; //Only when we're not in a Room 如果没有我们的房间那就返回
// 连接上了服务器
GUILayout.BeginArea(new Rect((Screen.width - 400) / 2, (Screen.height - 300) / 2, 400, 300));
GUILayout.Label("Main Menu");
//Player name
GUILayout.BeginHorizontal();
GUILayout.Label("Player name:", GUILayout.Width(150));
PhotonNetwork.playerName = GUILayout.TextField(PhotonNetwork.playerName);
if (GUI.changed)//Save name
PlayerPrefs.SetString("playerName", PhotonNetwork.playerName);
GUILayout.EndHorizontal();
GUILayout.Space(15);
//Join room by title
GUILayout.BeginHorizontal();
GUILayout.Label("JOIN ROOM:", GUILayout.Width(150));
roomName = GUILayout.TextField(roomName);
if (GUILayout.Button("GO"))
{
//通过名称加入房间
PhotonNetwork.JoinRoom(roomName);
}
GUILayout.EndHorizontal();
//Create a room (fails if exist!)
GUILayout.BeginHorizontal();
GUILayout.Label("CREATE ROOM:", GUILayout.Width(150));
roomName = GUILayout.TextField(roomName);
if (GUILayout.Button("GO"))
{
// 创建房间 最大玩家数10个人
// using null as TypedLobby parameter will also use the default lobby
PhotonNetwork.CreateRoom(roomName, new RoomOptions() { maxPlayers = 10 }, TypedLobby.Default);
}
GUILayout.EndHorizontal();
//Join random room
GUILayout.BeginHorizontal();
GUILayout.Label("JOIN RANDOM ROOM:", GUILayout.Width(150));
if (PhotonNetwork.GetRoomList().Length == 0)
{
//如果房间列表为0
GUILayout.Label("..no games available...");
}
else
{
if (GUILayout.Button("GO"))
{
//加入随机房间
PhotonNetwork.JoinRandomRoom();
}
}
GUILayout.EndHorizontal();
GUILayout.Space(30);
GUILayout.Label("ROOM LISTING:");
if (PhotonNetwork.GetRoomList().Length == 0)
{
GUILayout.Label("..no games available..");
}
else
{
//Room listing: simply call GetRoomList: no need to fetch/poll whatever!
// 有房间在等待连入
scrollPos = GUILayout.BeginScrollView(scrollPos);
foreach (RoomInfo game in PhotonNetwork.GetRoomList())
{
// 逐个打印房间名称
GUILayout.BeginHorizontal();
GUILayout.Label(game.name + " " + game.playerCount + "/" + game.maxPlayers);
if (GUILayout.Button("JOIN"))
{
PhotonNetwork.JoinRoom(game.name);
}
GUILayout.EndHorizontal();
}
GUILayout.EndScrollView();
}
GUILayout.EndArea();
}
void ShowConnectingGUI()
{
//没有连接上服务器时候显示的内容
GUILayout.BeginArea(new Rect((Screen.width - 400) / 2, (Screen.height - 300) / 2, 400, 300));
GUILayout.Label("Connecting to Photon server.");
GUILayout.Label("Hint: This demo uses a settings file and logs the server address to the console.");
GUILayout.EndArea();
}
public void OnConnectedToMaster()
{
// this method gets called by PUN, if "Auto Join Lobby" is off.
// this demo needs to join the lobby, to show available rooms!
PhotonNetwork.JoinLobby(); // this joins the "default" lobby
}
}
[Photon项目解析] 维京人 MainMenuVik
最新推荐文章于 2023-08-27 18:58:02 发布