紧接上篇 PUN 2 菜鸟养成记 1连接上主服务 https://mp.csdn.net/postedit/88073999
我们来看一下创建房间的方法
RoomOptions options = new RoomOptions {MaxPlayers = 2};
PhotonNetwork.CreateRoom("room name", options, null);
嗯 .. 也是两行 现在就不进去深挖了 我们来看回调
public override void OnJoinedRoom();
恭喜你 你已经开好房了 这个时候你就可以拉取这个房间内玩家列表,查看每个人的属性状态了
foreach (Player p in PhotonNetwork.PlayerList)
{
Debug.log(p.NickName)
object isPlayerReady;
if (p.CustomProperties.TryGetValue(AsteroidsGame.PLAYER_READY, out isPlayerReady))
{
Debug.log((bool) isPlayerReady));
}
}
房开好之后我们应该干嘛?当然是加入房间呀!
当然 加入房间之前我们得进前台(大厅)吧
if (!PhotonNetwork.InLobby)
{
PhotonNetwork.JoinLobby();
}
成功进入大厅后回调这个方法
public override void OnRoomListUpdate(List roomList);
房间目录有了我们就可以为所欲为 想去哪个房就去哪个房了
if (PhotonNetwork.InLobby)
{
PhotonNetwork.LeaveLobby();
}
PhotonNetwork.JoinRoom("Room name");
你也可以闭着眼睛随便进,每间房都好玩(如果房间列表为空,那么会跟你创建一个房间并进入)
PhotonNetwork.JoinRandomRoom();
进入房间后我自己和房间内的人反应(回调)是不一样的
我是 : 哈哈哈 大爷我进来了
public override void OnJoinedRoom();
房间内其他人是 : 有客官进来一起玩了
public override void OnPlayerEnteredRoom(Player newPlayer);
进入房间之后 会自动通知所有人房间内其他人的准备情况
public override void OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProps)
{
object isPlayerReady;
if (changedProps.TryGetValue(AsteroidsGame.PLAYER_READY, out isPlayerReady))
{
Debug.log((bool) isPlayerReady);
}
}
大家快点准备 ,游戏马上就要开始啦
Hashtable props = new Hashtable() {{AsteroidsGame.PLAYER_READY, true}};
PhotonNetwork.LocalPlayer.SetCustomProperties(props);
房主检查大家的准备情况
private bool CheckPlayersReady()
{
if (!PhotonNetwork.IsMasterClient)
{
return false;
}
foreach (Player p in PhotonNetwork.PlayerList)
{
object isPlayerReady;
if (p.CustomProperties.TryGetValue(AsteroidsGame.PLAYER_READY, out isPlayerReady))
{
if (!(bool) isPlayerReady)
{
return false;
}
}
else
{
return false;
}
}
return true;
}
准备好了之后我们关闭这间房的大门
PhotonNetwork.CurrentRoom.IsOpen = false;
PhotonNetwork.CurrentRoom.IsVisible = false;
一起沉浸游戏的海洋吧