使用Photon引擎进行unity网络游戏开发(三)——网络游戏大厅及房间

使用Photon引擎进行unity网络游戏开发(三)——网络游戏大厅及房间

连接到Photon

ConnectUsingSettings 设置你的客户端的游戏版本并使用一个由PUN设置向导写入的配置文件,该配置文件保存在PhotonServerSettings里面。

PhotonNetwork.ConnectUsingSettings("1.0");

游戏大厅

进入游戏大厅:

MasterServer会管理多个游戏大厅,当客户端连接至MasterServer后,需要选择一个游戏大厅进入

方法一:设置PhotonServerSetting中的Auto Join Lobby选项进入默认游戏大厅

enter description here

方法二:覆写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)

转载于:https://www.cnblogs.com/Firepad-magic/p/8336428.html

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值