用unity3d实现游戏房间(lobby chat)

unity3d实现游戏房间

//例证来自鹰大的实例

Ps:Awake用来初始化自身;Start用来初始化外部。

一.登录菜单MainMenu

主框架

1 Awake()  初始化玩家名称 组件 调用启用多人共同游戏

2 OnGUI()  调用登录窗口函数

窗口函数

① NameMenu(id : int) 登录菜单函数

消息传递

1) OpenMenu(newMenu : String) 调用启用游戏菜单【多人游戏 会话厅 加入游戏方式选择[快速、自定义]

二.多人游戏菜单MultiplayerMenu

主框架

1.Awake()[内部] 构造窗口

2.Start()[外部] 为脚本赋值

3.OnGUI() 调用多人游戏菜单函数

窗口函数

① windowGUI(id : int) 多人游戏菜单函数

消息传递

1) EnableMenu() 标识启用游戏菜单

三.新建服务器以及会话厅GameLobby

主框架

1.Awake() 初始化显示

2.Start() 初始化多人游戏脚本

3.OnGUI () 根据连接的状况,做不同的操作或者显示

4.Update() 每隔1分钟注册1次主机

窗口函数

① hostSettings() 创建会话厅

② showLobby() 显示会话厅

③ launchingGameGUI() 加载游戏的UI

会话消息传递

1) EnableLobby() 开启会话厅

2) leaveLobby() 离开会话厅

房间服务器

1) StartHost(password : String, players : int, serverName : String) 开启房间服务器

2) HostLaunchGame() 主机启动游戏

RPC

1) setServerSettings(password : boolean, maxPlayers : int, newSrverTitle : String) 设置服务器信息

2) addPlayer(player : NetworkPlayer, username : String) 将玩家加入玩家列表

3) playerLeft(player : NetworkPlayer) 销毁玩家信息,删除rpc,删除objects

4) launchGame() 标记启动游戏

网络调用

(一).客户端

a. OnConnectedToServer() 连接到服务器

(二).服务器

b. OnServerInitialized() 服务器初始化

c. OnPlayerDisconnected(player: NetworkPlayer) 玩家断开

四. 对话框架以及对话显示LobbyChat

主框架

1. Awake() 初始化窗口

2. OnGUI () 对话窗口锁定以及窗口函数调用

窗口函数

1 GlobalChatWindow (id : int) 对话显示 对话输入

消息处理函数

1 HitEnter(msg : String) 输入内容回车消息

2 addGameChatMessage(str : String)  服务器调用消息【系统通知消息】

3 CloseChatWindow () 关闭对话窗口

4 ShowChatWindow () 显示对话窗口

RPC

1 TellServerOurName(name : String, info : NetworkMessageInfo)  向服务器传递玩家信息

2 ApplyGlobalChatText (name : String, msg : String) 传递对话到对话列表

网络调用

(一)客户端

1. OnConnectedToServer() 连接到服务器

2. OnDisconnectedFromServer() 当玩家从服务器断开

(二)服务器

3. OnServerInitialized() 服务器初始化

4. OnPlayerDisconnected(player: NetworkPlayer) 客户端断开

5. OnPlayerConnected(player: NetworkPlayer) 当玩家连接到服务器

五. 选择加入游戏菜单JoinMenu

主框架

1.Awake() 初始化窗口

5.Start() 初始化多人游戏脚本

2.OnGUI () 显示错误,根据选择显示不同的加入游戏界面

窗口函数

① directConnectGUIWindow(id : int) 直接连接

② listGUI (id : int) 显示列表并通过列表连接

加入游戏消息处理

1) EnableMenu(quickplay : boolean) 初始化 启用加入游戏所需要的值

2) quickplayFunction() 快速游戏

3) FailedConnRetry(invalidPassword : boolean) 失败重试函数

网络处理函数

(一)客户端

a. OnFailedToConnectToMasterServer(info: NetworkConnectionError) 连接到主服务器失败

b. OnFailedToConnect(info: NetworkConnectionError) 连接到服务器失败

c. OnConnectedToServer() 连接到服务器

六.Nat穿透测试NatTester

主框架

1.Start() 开始测试NAT,测试有无公有ip

2.Update() 反复调用测试NAT函数

NAT测试处理函数

1) TestConnection() 测试NAT使用情况函数

七. 游戏脚本GameScript

主框架

1.Awake() 初始化开启网络消息传递

2.OnGUI() 根据当前网络连接情况显示信息

网络函数

(一)客户端

a. OnDisconnectedFromServer(info : NetworkDisconnection) 从服务器断开

(二)服务器

b. OnPlayerConnected(player: NetworkPlayer) 玩家连接到服务器

c. OnPlayerDisconnected(player: NetworkPlayer) 玩家从服务器断开

你可能感兴趣的