PUN 2 菜鸟养成记 2主服务

紧接上篇 PUN 2 菜鸟养成记 1连接上主服务      https://mp.csdn.net/postedit/88073999

PUN 2 菜鸟养成记 2主服务_第1张图片

我们来看一下创建房间的方法

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;

一起沉浸游戏的海洋吧

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Unity,PUN)