1
00:00:00,000 --> 00:00:06,997
下面是演示环节 本节我们在《慕课英雄

2
00:00:06,997 --> 00:00:12,080
2 》网络版中 添加、 创建和加入房间的功能

3
00:00:12,080 --> 00:00:17,185
这里我们已经在 Unity 编辑器中打开了《慕课英雄 2 》的

4
00:00:17,185 --> 00:00:24,110
GameLobby 场景 游戏大厅面板的随机进入房间按钮

5
00:00:24,110 --> 00:00:29,126
用于随机加入大厅中的任意房间 我们为它绑定

6
00:00:29,126 --> 00:00:37,243
LobbyPanelController 脚本的
ClickRandomJoinButton

7
00:00:37,243 --> 00:00:43,245
函数 [空白_录音]

8
00:00:43,245 --> 00:00:49,343
该函数启用游戏房间面板 并调用

9
00:00:49,343 --> 00:00:56,020
PhotonNetwork.JoinRandomRoom 函数随机进入游戏房间

10
00:00:56,020 --> 00:01:04,015
创建房间按钮用于在游戏大厅中创建一个新的房间 我们为它绑定

11
00:01:04,015 --> 00:01:11,976
LobbyPanelController 脚本的
ClickCreateRoomButton

12
00:01:11,976 --> 00:01:19,179
函数 该函数用于激活创建房间面板，CreateRoomPanel 在

13
00:01:19,179 --> 00:01:25,109
Project 视图中，我们把 Prefabs

14
00:01:25,109 --> 00:01:31,138
文件夹 中的 CreateRoomPanel 拖入 LobbyInfo

15
00:01:31,138 --> 00:01:35,779
对象中 将它放置在 LobbyInfo

16
00:01:35,779 --> 00:01:42,790
子对象的最底端 保证创建房间面板显示在游戏大厅面板之上

17
00:01:42,790 --> 00:01:49,287
我们展开创建房间面板 其中

18
00:01:49,287 --> 00:01:54,970
CreateRoomBackground 表示创建房间

19
00:01:54,970 --> 00:02:02,420
面板的背景 CreateRoomLabel

20
00:02:02,420 --> 00:02:10,110
用于显示创建房间四个字 RoomNameLabel 用于显示房间名称

21
00:02:10,110 --> 00:02:16,300
RoomNameInputField 用于输入房间名称

22
00:02:16,300 --> 00:02:23,000
右边的 RoomNameHint 用于显示房间名称的提示信息

23
00:02:23,000 --> 00:02:29,940
如果玩家创建房间时输入的房间名与大厅中的已有房间名重复 那么

24
00:02:29,940 --> 00:02:37,632
RoomNameHint 就会显示房间名称重复这几个字
MaxPlayerLabel 和

25
00:02:37,632 --> 00:02:47,580
MaxPlayerToggleGroup
表示游戏人数，其中游戏人数可以选择两人或者四人

26
00:02:47,580 --> 00:02:55,340
游戏人数我们用单选框 ToggleGroup

27
00:02:55,340 --> 00:03:01,000
组件实现 最后是确认创建和取消创建按钮

28
00:03:01,000 --> 00:03:10,620
分别用于确认游戏房间的创建以及取消游戏房间的创建 接下来

29
00:03:10,620 --> 00:03:16,300
我们为创建房间面板 CreateRoomPanel 绑定控制脚本

30
00:03:16,300 --> 00:03:21,710
我们将 CreateRoomController
脚本绑定到 LobbyPanel 对象上

31
00:03:21,710 --> 00:03:30,830
并设置脚本组件的相关属性 [空白_录音]

32
00:03:30,830 --> 00:03:40,755
[空白_录音] [空白_录音]

33
00:03:40,755 --> 00:03:46,310
下面我们为确认创建房间按钮绑定事件处理函数

34
00:03:46,310 --> 00:03:53,980
事件处理函数的名称为 ClickConfirmCreateRoomButton

35
00:03:53,980 --> 00:04:00,423
我们为取消创建房间按钮绑定事件处理函数 函数的名称为

36
00:04:00,423 --> 00:04:05,820
ClickCancelCreateRoomButton 下面我们设置

37
00:04:05,820 --> 00:04:11,748
LobbyPanel 对象 的 LobbyPanelController

38
00:04:11,748 --> 00:04:18,820
组件中的剩余属性 [空白_录音]

39
00:04:18,820 --> 00:04:27,927
玩家创建或者进入游戏房间后 需要显示游戏房间界面。

40
00:04:27,927 --> 00:04:33,140
这里我们将 Project 视图 Prefabs 文件夹中的

41
00:04:33,140 --> 00:04:38,417
RoomPanel 拖入 StartCanvas 对象中，让它位于

42
00:04:38,417 --> 00:04:43,920
LobbyPanel 下方 关于 Room Panel

43
00:04:43,920 --> 00:04:48,441
我们会在下一节演示视频中进行讲解 接下来我们设置

44
00:04:48,441 --> 00:04:54,678
LobbyPanelController 和
LoginPanelController

45
00:04:54,678 --> 00:05:02,910
脚本中的 RoomPanel 属性 属性设置完成后

46
00:05:02,910 --> 00:05:08,120
我们构建当前项目，点击 file 菜单中的 Build Settings

47
00:05:08,120 --> 00:05:13,700
打开项目构建窗口，点击 Add Open Scenes

48
00:05:13,700 --> 00:05:21,673
将 GameLobby 场景添加到构建场景列表中 最后点击 Build

49
00:05:21,673 --> 00:05:31,015
按钮，构建游戏客户端程序 [声响]

50
00:05:31,015 --> 00:05:40,850
项目构建完毕后 我们启动两个构建完成的游戏客户端程序

51
00:05:40,850 --> 00:05:48,080
在第一个客户端中

52
00:05:48,080 --> 00:05:55,770
我们登录并进入游戏大厅，点击创建房间按钮

53
00:05:55,770 --> 00:06:00,683
在弹出的创建房间面板中 输入房间名

54
00:06:00,683 --> 00:06:05,132
Test，选择房间人数为 4

55
00:06:05,132 --> 00:06:10,510
人 点击确认创建按钮，完成房间的创建

56
00:06:10,510 --> 00:06:19,145
在第二个游戏客户端中 我们登录并进入游戏大厅，此时

57
00:06:19,145 --> 00:06:26,870
游戏大厅面板会显示第一个客户端创建的游戏房间 我们点击创建房间按钮

58
00:06:26,870 --> 00:06:32,300
在面板中输入房间名称 Test

59
00:06:32,300 --> 00:06:41,700
并点击确认创建按钮，此时房间 名称右侧显示提示信息，房间名称重复

60
00:06:41,700 --> 00:06:51,170
我们点击取消创建按钮，返回游戏大厅 点击进入房间按钮，进入之前客户端创建的房间

61
00:06:51,170 --> 00:06:56,180
此时游戏画面会显示房间面板

62
00:06:56,180 --> 00:07:04,590
我们未设置房间面板的控制函数 因此房间面板的显示不完全正确

63
00:07:04,590 --> 00:07:09,790
我们关闭打开的客户端程序 返回

64
00:07:09,790 --> 00:07:16,001
Unity 编辑器 双击打开 CreateRoomController

65
00:07:16,001 --> 00:07:21,150
脚本 [空白_录音]

66
00:07:21,150 --> 00:07:26,222
我们为大家讲解创建房间面板的代码实现 在

67
00:07:26,222 --> 00:07:31,330
CreateRoomController 类中

68
00:07:31,330 --> 00:07:38,930
我们定义了一个私有数组 MaxPlayerNumber 用于保存最大玩家的个数

69
00:07:38,930 --> 00:07:47,030
ClickConformCreateRoomButton 函数用于确认房间的创建

70
00:07:47,030 --> 00:07:53,500
首先我们根据最大玩家个数开关组的打开情况

71
00:07:53,500 --> 00:08:01,200
设置房间最大玩家的个数，将该属性保存在 roomOptions 中

72
00:08:01,200 --> 00:08:06,595
然后使用 PhotonNetwork.

73
00:08:06,595 --> 00:08:11,990
GetRoomList 函数获取游戏大厅内所有的游戏房间

74
00:08:11,990 --> 00:08:19,280
遍历游戏房间，检查新创建的房间名称是否与已有房间名称重复

75
00:08:19,280 --> 00:08:25,470
如果房间名重复，房间名提示信息中会显示

76
00:08:25,470 --> 00:08:33,690
房间名重复信息，不执行创建房间的逻辑 如果房间名称未重复

77
00:08:33,690 --> 00:08:38,240
我们调用 PhotonNetwork.CreateRoom 函数

78
00:08:38,240 --> 00:08:43,012
创建新游戏房间，使用 SetActive

79
00:08:43,012 --> 00:08:49,480
函数 禁用创建房间面板，启用房间加载提示信息

80
00:08:49,480 --> 00:08:57,176
ClickCancelCreateRoomButton 函数 用于取消房间的创建。

81
00:08:57,176 --> 00:09:01,387
在该函数中，我们使用 SetActive

82
00:09:01,387 --> 00:09:07,300
函数 禁用创建房间面板，并显示游戏大厅面板

83
00:09:07,300 --> 00:09:13,302
最后我们返回 Unity

84
00:09:13,302 --> 00:09:18,440
编辑器 保存游戏场景

85
00:09:18,440 --> 00:09:26,640
以上 就是本节演示的全部内容
