Unity UNet Lobby 的一些测试信息

来源:互联网 发布:java 返回值为t泛型 编辑:程序博客网 时间:2024/05/22 02:20

Unity UNet Lobby 的一些测试信息

测试简介

测试Unity Unet相关的一些机制。包括客户端身份判断,同步变量,Cmd函数,Rpc函数和Lobby连接断开机制

测试前提

1.LobbyController脚本在LobbyPlayer预设体上,继承了NetworkBehaviour。该预设体在客户端加入大厅后自动创建。(有几个玩家创建几个)。并且该预设体的NetworkIdentity权限设置为LocalPlayerAuthority。
2.大厅和游戏场景都只会有两个玩家。一个作为主机(服务端+客户端),一个作为客户端。
3.还有一些辅助测试脚本,此处略。
4.这里的所有测试Cmd,Rpc都没有加权限限制。

开始测试

测试1:(测试客户端身份判断)

在LobbyController脚本上分别判断isServer,isClient因为有两个角色,所有会有两个LobbyPlayer,一个是LocalPlayer,一个是RemotePlayer

客户端身份判断 测试如下表:

判断的内容 主机方 客户端方 isServer Local : √
Remote : √ Local : ×
Remote : × isClient Local : √
Remote : √ Local : √
Remote : √

测试2:(测试修改了同步变量的情况)

LobbyController脚本中有一个 [SyncVar] 同步变量:[SyncVar] int value = 50;主机和客户端都可以更改该同步变量的值(值+1)。⑴.没有Cmd请求服务器同步,单纯各自操作同步变量。⑵.有Cmd请求服务器同步:修改值通过Cmd请求服务器改变同步变量。

测试如下表:

测试的内容 主机方 客户端方 启动后的值 Local : 初始化设置的值50
Remote : 初始化设置的值50 ⑴.如果主机的值未变:
Local : 初始化设置的值50
Remote : 初始化设置的值50
⑵.如果主机的值变了:
Local : 初始化设置的值50
Remote : 主机变了的值51 如果通过主机修改值 Local : 值变成了51
Remote : 值变成了51 Local : 值变成了51
Remote : 值变成了51 如果通过客户端修改值 Local : 值不变50
Remote : 值不变50 Local : 值变成了51
Remote : 值变成了51 如果通过客户端修改值
(通过Cmd请求服务端修改同步变量) Local : 值不变50
Remote : 值变成了51 Local : 值变成了51
Remote : 值变成了51

测试3:(测试调用了Cmd函数后的执行情况)

LobbyController脚本中有一个 [SyncVar] 同步变量:[SyncVar] int value = 50;主机和客户端都可以更改该同步变量的值(值+1)。都是通过Cmd函数请求服务器改变同步变量。
    [Command]    void CmdValue(){        value++;    }

测试如下表:

测试的内容 主机方 客户端方 主机调用Cmd函数 Local : 执行Cmd 值变成了51
Remote : 执行Cmd 值变成了51 Local : 没执行Cmd 值变成了51
Remote : 没执行Cmd 值变成了51 客户端调用Cmd函数 Local : 没执行Cmd 值没变50
Remote : 执行Cmd 值变成了51 Local : 没执行Cmd 值变成了51
Remote : 没执行Cmd 值变成了51

测试4:(测试调用了Rpc函数后的执行情况)

LobbyController脚本中有一个 [SyncVar] 同步变量:[SyncVar] int value = 50;主机和客户端都可以更改该同步变量的值(值+1)。都是通过Rpc函数改变同步变量。
    [ClientRpc]    void RpcValue(){        value++;    }

测试如下表:

测试的内容 主机方 客户端方 主机调用Rpc函数 Local : 执行Rpc 值变成了51
Remote : 执行Rpc 值变成了51 Local : 执行Rpc 值变成了51
Remote : 执行Rpc 值变成了51 客户端调用Rpc函数 Local : 没执行Rpc 值没变50
Remote : 没执行Rpc 值没变50 报错:RPC Function xxxx called on client
Local : 没执行Rpc 值变成了51
Remote : 没执行Rpc 值变成了51

测试5:(测试调用了Cmd函数后,Cmd函数再调用Rpc函数的执行情况)

LobbyController脚本中有一个 [SyncVar] 同步变量:[SyncVar] int value = 50;主机和客户端都可以更改该同步变量的值(值+1)。都是通过Cmd函数调用Rpc函数,来改变同步变量。
    [Command]    void CmdValue(){        RpcValue();    }    [ClientRpc]    void RpcValue(){        value++;    }

测试如下表:

测试的内容 主机方 客户端方 主机调用Rpc函数 Local : 执行Cmd 执行Rpc 值变成了51
Remote : 执行Cmd 执行Rpc 值变成了51 Local : 执行Rpc 没执行Cmd 值变成了51
Remote : 执行Rpc 没执行Cmd 值变成了51 客户端调用Rpc函数 Local : 没执行Cmd 没执行Rpc 值没变50
Remote : 执行Cmd 执行Rpc 值变成了51 Local : 执行Rpc 没执行Cmd 值变成了51
Remote : 没执行Cmd 没执行Rpc 值变成了51

测试6:(测试主机和客户端连接断开的情况)

主机和客户端目前已经在局域游戏中主机和客户端都可以从游戏场景返回大厅或退出myLobbyManager 为 NetworkLobbyManager的实例
    // 返回大厅    public void OnClickBack(){        myLobbyManager.SendReturnToLobby ();    }    // 退出    public void OnClickCancel(){        if (isServer) {            myLobbyManager.StopHost ();        } else {            myLobbyManager.StopClient ();        }    }

测试如下表:

测试的内容 主机方 客户端方 主机点击返回(客户端还在游戏中) 主机返回了大厅,准备状态为false 客户端跟随主机返回大厅,准备状态为false 客户端点击返回(主机还在游戏中) 主机跟随客户端返回了大厅,准备状态为false 客户端返回了大厅,准备状态为false 主机点击退出(客户端还在游戏中) 主机返回大厅,从连接中断开 客户端跟随主机返回大厅,从连接中断开 客户端点击退出(主机还在游戏中) 主机不影响 客户端返回大厅,从连接断开。如果主机还在游戏,则无法再加入主机。
0 0
原创粉丝点击