按照官方文档的说明,先新建一个网络启动脚本
我就叫它NetworkLauncher
using UnityEngine;
using Photon.Pun;//要引用Photon的库
public class NetworkLauncher : MonoBehaviourPunCallbacks//继承也要改成Pun的类
{
void Start()
{
//使用默认设置好的Settings;
PhotonNetwork.ConnectUsingSettings();
Debug.Log("准备连接服务器");
}
//当程序连接到服务器后的回调函数
public override void OnConnectedToMaster()
{
//base.OnConnectedToMaster();
Debug.Log("已连接服务器");
}
}
这个脚本挂在一个空对象下面,当程序运行的时候,它就会开始连接服务器,有时候会出现连接不上的情况,应该是服务器的原因吧,等会再试就好了(如果是别的原因,希望评论告诉我一下)
当服务器连接成功以后,就可以加入大厅和加入房间,可以让客户端加入大厅以后再选择房间,这个自己代码逻辑设置吧,没什么好说的
using Photon.Realtime;//创建房间要用这个库
//让玩家输入自己的名字、房间号码
public InputField roomName;
public InputField playerName;
//当程序连接到服务器后的回调函数
public override void OnConnectedToMaster()
{
//base.OnConnectedToMaster();
Debug.Log("已连接服务器");
//加入大厅
PhotonNetwork.JoinLobby();
}
//当程序连接到大厅后的回调函数
public override void OnJoinedLobby()
{
roomName.gameObject.SetActive(true);
playerName.gameObject.SetActive(true);
}
public void ClearOrJoinRoom()
{
if(roomName.text!=""&&playerName.text!="")
{
//将玩家名字记录
PhotonNetwork.NickName = playerName.text;
//创建房间或者加入房间,PUN是有单独的创建和加入方法的
//这个会用了单独的就没有问题了
//玩家数量设置,免费版的Pun最多支持20个人同时在线
RoomOptions options = new RoomOptions { MaxPlayers = 4 };
//创建或者加入房间
PhotonNetwork.JoinOrCreateRoom(roomName.text, options, default);
}
}
//当程序连接到房间后的回调函数
public override void OnJoinedRoom()
{
//base.OnJoinedRoom();
Debug.Log("开始加载游戏场景");
PhotonNetwork.LoadLevel("Game");
}
现在就可以成功连接服务器、大厅、房间了