使用Photon引擎进行unity网络游戏开发(三)——网络游戏大厅及房间
2018-01-23 16:24
531 查看
使用Photon引擎进行unity网络游戏开发(三)——网络游戏大厅及房间
PhotonPUNUnity网络游戏开发连接到Photon
ConnectUsingSettings 设置你的客户端的游戏版本并使用一个由PUN设置向导写入的配置文件,该配置文件保存在PhotonServerSettings里面。PhotonNetwork.ConnectUsingSettings("1.0");
游戏大厅
进入游戏大厅:
MasterServer会管理多个游戏大厅,当客户端连接至MasterServer后,需要选择一个游戏大厅进入方法一:设置PhotonServerSetting中的Auto Join Lobby选项进入默认游戏大厅
方法二:覆写OnConnectedToMaster()方法,指定游戏大厅进入
/// <summary> /// 进入大厅回调 /// </summary> public override void OnJoinedLobby() { Debug.Log("欢迎 " + PhotonNetwork.player.NickName); UserMessageText.text = "欢迎 " + PhotonNetwork.player.NickName; }
游戏房间
创建游戏房间
通过CreateRoom方法我们可以创建游戏房间,其中RoomOption类可以帮助我们设置房间的一些属性,如房间中的人数,房间大厅中是否可见等PhotonNetwork.CreateRoom(roomName.text, roomOptions, TypedLobby.Default);
public void ClickConfirmCreateRoomButton()
{
RoomOptions roomOptions = new RoomOptions();
RectTransform toggleRectTransform = MaxPlayerToggle.GetComponent<RectTransform>();
int childCount = toggleRectTransform.childCount;
for (int i = 0; i < childCount; i++)
{
if (toggleRectTransform.GetChild(i).GetComponent<Toggle>().isOn)
{
roomOptions.MaxPlayers = maxPlayerNum[i];
break;
}
}
RoomInfo[] roomInfos = PhotonNetwork.GetRoomList();
bool isRoomNameReapeat = false;
foreach (RoomInfo roomInfo in roomInfos)
{
if (roomName.text == roomInfo.Name)
{
isRoomNameReapeat = true;
}
}
if (isRoomNameReapeat)
roommNameHint.text = "房间名称重复!";
else
{
PhotonNetwork.CreateRoom(roomName.text, roomOptions, TypedLobby.Default);CreateRoomPanel.SetActive(false);
roomLoadingPanel.SetActive(true);
}
}
加入游戏房间
随机加入房间
PhotonNetwork.JoinRandomRoom();
加入特定的房间
PhotonNetwork.JoinRoom(roomName);
显示和更新房间列表
通过Photon提供的OnReceivedRoomListUpdate()回调函数,我们可以处理房间内大厅更新时的逻辑,例如更新UI中显示的房间列表。/// <summary> /// 覆写回调函数,当房间更新时调用 /// 更新游戏大厅中的房间列表信息 /// </summary> public override void OnReceivedRoomListUpdate() { roomInfo=PhotonNetwork.GetRoomList(); ... ShowRoomMessage(); } private void ShowRoomMessage() { //通过roomInfo信息来显示房间信息 ... }
常用回调函数
/// <summary> /// 进入大厅回调 /// </summary> public override void OnJoinedLobby() /// <summary> /// 连接失败回调 /// </summary> /// <param name="cause"></param> public override void OnConnectionFail(DisconnectCause cause) //进入游戏房间回调函数 public override void OnJoinedRoom() //客户端连接到masterserver时调用,加入默认游戏大厅 //等同于Photonseversetting中勾选Auto join lobby public override void OnConnectedToMaster() /// <summary> /// 当房间列表更新时调用 /// </summary> public override void OnReceivedRoomListUpdate() //当加入房间失败时调用 public override void OnPhotonJoinRoomFailed(object[] codeAndMsg)
相关文章推荐
- 使用Photon引擎进行unity网络游戏开发(二)——Photon常用类介绍
- 使用Photon引擎进行unity网络游戏开发(四)——Photon引擎实现网络游戏逻辑
- 使用Photon引擎进行unity网络游戏开发(一)——Photon引擎简介
- Unity使用UGUI进行VR游戏的界面开发
- 直接使用socket_TCP进行网络游戏开发
- 用 Unity 进行网络游戏开发(一)
- 使用Unity进行Android游戏开发
- 用Unity进行网络游戏开发(一)
- 使用Unity开发安卓游戏怎么进行性能优化?
- Unity中使用暴风魔镜进行VR游戏开发
- 用 Unity 进行网络游戏开发
- Unity使用UGUI进行VR游戏的界面开发
- 【iOS-Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;
- 使用Flash Builder 4.5进行多平台游戏开发
- 【使用Unity开发Windows Phone上的2D游戏】(2)初识工具
- Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析
- [libGDX游戏开发教程]使用libGDX进行游戏开发(1)-游戏设计
- Cocos2d—X游戏开发之(socket)Mac下网络抓包工具(Cocoa Packet Analyzer使用教程)
- 使用Flash, HTML5, Unity进行web游戏开发的现状对比
- Unity3d使用蓝牙(bluetooth)开发IOS点对点网络游戏