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

Photon
PUN
Unity
网络游戏开发

连接到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网络游戏开发(三)——网络游戏大厅及房间的更多相关文章

  1. 使用Photon引擎进行unity网络游戏开发(四)——Photon引擎实现网络游戏逻辑

    使用Photon引擎进行unity网络游戏开发(四)--Photon引擎实现网络游戏逻辑 Photon PUN Unity 网络游戏开发 网络游戏逻辑处理与MasterClient 网络游戏逻辑处理: ...

  2. 使用Photon引擎进行unity网络游戏开发(二)——Photon常用类介绍

    使用Photon引擎进行unity网络游戏开发(二)——Photon常用类介绍 Photon PUN Unity 网络游戏开发 Photon常用类介绍: IPunCallback PUNGIPunCa ...

  3. 使用Photon引擎进行unity网络游戏开发(一)——Photon引擎简介

    使用Photon引擎进行unity网络游戏开发(一)--Photon引擎简介 Photon PUN Unity 网络游戏开发 Photon引擎简介: 1. 服务器引擎: 服 务 器 引 擎 介 绍 服 ...

  4. unity 3d开发的大型网络游戏

    unity 3d开发的大型网络游戏 一.总结 1.unity的官网上面应该有游戏列表 2.unity3D是很好的3d游戏引擎,也支持2d,也能做很多画面精良的3A级游戏 3.范围:电脑游戏,手机游戏, ...

  5. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (三)

    本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二) 前几天有点事情所以没有继续更新,今天我们接着说.上个帖子中我们看到已经把Excel数据生成了.bin的文件,不过其 ...

  6. Slickflow.NET 开源工作流引擎高级开发(三) -- 并行分支容器与会签工作流模式的组合

    前言:  流程引擎的核心功能是负责解析流程定义XML和流转,业务环节的不断积累,让人们不断总结和抽象出一些模式,这些模式统称为工作流模式(Workflow Pattern).本文的重点就是介绍一种常见 ...

  7. Siki_Unity_4-4_丛林战争_Socket/TCP网络游戏开发

    Unity 4-4 丛林战争(Socket/TCP网络游戏开发) 任务1:素材.演示.Prerequisite 使用c#的有关TCP的底层API进行服务器端的开发(直接通过socket进行通信) 功能 ...

  8. Unity3D游戏开发和网络游戏实战书籍及配套资源和一些视频教程分享

    目录 1. 按 2. pdf 3. 配套资源 3.1. Unity网络游戏实战第二版 3.2. Unity网络游戏实战第一版 4. 视频教程 5. 更多坦克大战代码 1. 按 本文主要分享了: Uni ...

  9. 喵的Unity游戏开发之路 - 推球:游戏中的物理

    很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3D游戏开发. 本文不 ...

随机推荐

  1. 2.4G电动车防盗方案 超低功耗单发器 SI24R2F

           对于现在的电动车防盗标签和校园卡的市场,主要以2.4G为主做标签,各色各样的2.4G国产芯片渐渐的能满足这块RFID领域.但是作为RFID的推动领导者,深圳市动能世纪科技有限公司专注于超 ...

  2. ORA-00600:internal error code,arguments:[keltnfy-idmlnit],[46],[1],[],[],[],[],[]

    如图:在DBCA进行到3%时.报错 由于/etc/hosts与/etc/sysconfig/network不正确应,所以报错 [root@ocm2 ~]# cat /etc/hosts # Do no ...

  3. sharepoint rest api Add ListItem 报错

    Recently, I was trying to create a list item using Rest API on Sharepoint 2013. I got the following ...

  4. spring cloud config将配置存储在数据库中

    Spring Cloud Config Server最常见是将配置文件放在本地或者远程Git仓库,放在本地是将将所有的配置文件统一写在Config Server工程目录下,如果需要修改配置,需要重启c ...

  5. oo第二次总结作业

    OO电梯作业总结 这三周的作业和课堂内容以及OS的课上内容都相同,都是关于多线程方面的知识.在这次作业中由浅入深布置了三项多线程电梯方面的作业,让我们在实践中感受了多线程的工作原理以及各项需要注意的要 ...

  6. python - 流程控制基础习题

    #打印1 到100 的和** i = 0 s = 0 while i <100: i += 1 s += i print(s) print('1+2+,,100=',s) #打印字符A~Z fo ...

  7. C++_类和对象

    类和对象 OOP第二课 1 类的构成 1.1 从结构到类 1.2 类的构成 2 成员函数的声明 2.1 普通成员函数形式 2.2 将成员函数以内联函数的形式进行说明 3 对象的定义和使用 3.1 对象 ...

  8. 12JavaScript字符串

    JavaScript 字符串用于存储和处理文本. 1.JavaScript 字符串 字符串可以存储一系列字符,如 "John Doe". 字符串可以是插入到引号中的任何字符.你可以 ...

  9. Angular 弹窗 控件

    这个控件个人很喜欢,比起primgNG等弹窗组建,这款弹窗可以很轻松的定义自己的样式和布局. 可控参数有:宽度,高度,是否带有关闭图标,基本满足基础弹窗需求. 并且 Title/Content/Foo ...

  10. thinkphp3.2+cropper上传多张图片剪切图片

    实现效果截图 点加号可以继续上传第二张图片 代码部<--引入cropper相关文件--> <link rel="stylesheet" href="/h ...