RPC不能接受字符串?

时间:2014-01-24 02:21:56

标签: string rpc

我正在制作游戏。客户端将RPC发送到服务器,说“#34;将我移动到此实例"”。它工作正常,直到我重新启动我的计算机并重新加载节点/数据库服务器等。但现在,如果我给它一个字符串它不会工作,如果我不给它一个字符串并在其中声明它执行完全相同的RPC,它工作正常。有问题的字符串是zoneId。

这是RPC:

[RPC]
IEnumerator FindGameServerReq(uLobby.LobbyMessageInfo info, string zoneId)
{
    Debug.Log("Client " + info.sender + " requested joinable game server.");
    Debug.Log("Zone ID: " + zoneId);

    var req = _instanceMgr.GetInstance(zoneId);
    yield return req.WaitUntilDone();

    var gameServerEndPoint = req.GetGameServerEndPoint();
    Debug.Log("Informing " + info.sender + " to join game server " + gameServerEndPoint);
    uLobby.Lobby.RPC("FindGameServerResp", info.sender, gameServerEndPoint);
}

这就是我调用RPC的方式:

uLobby.Lobby.RPC("FindGameServerReq", uLobby.LobbyPeer.lobby, "town");

这是错误:

Exception: Can't read from BitStream because the type safe code 'String' should have been 'Object'
uLink.BitStream.#=qaJMtkufwOBTmus4Sj1oTtg== (BitStreamTypeCode #=q0kejgO9k7qY8elenFktRag==)
uLink.BitStream._ReadObject (uLink.BitStreamCodec codec, System.Object[] codecOptions)
#=qEcomxFqHWOojBhw7H8BPzzZhTr1DAnoBEQ62wyTQ$_s=.#=qGXSr2kjU4f7Ppc8kLs_Ngw== (uLink.BitStream #=qgXeDfPNYYMJmwReOvN7L$g==, System.Object #=quKCAMLPDCdyzEzH7UPZtmg==)
#=qI8pUof4AE4hEbRq3kz45z_BPBVKqHSPhJs4bLixooWQ=.#=q0c9j_kaqqCWqjUzT6CDHZQ== (uLink.BitStream #=qQILAgzJGastvZ9EIjYcBAA==, System.Object #=qIMGdUjbLteWVoYoL7pJv6Q==)
uLobby.Lobby.#=qn$OneteGV_YoF5_9aIgusg== (.#=q$FieuT6o10Me2og7rTqd9Q== #=qkk5WAgkwWtcicPRsMf4WhQ==, Boolean #=qHhcjKXvQyV_PqtKYVSZAqA==)

显然字符串应该是字符串而不是对象。请帮忙,我已尝试过统一答案,但在那里得到答案几乎是不可能的,因为他们的网站有点矛盾。

1 个答案:

答案 0 :(得分:0)

只需以这种方式反转参数的顺序:

IEnumerator FindGameServerReq(string zoneId, uLobby.LobbyMessageInfo info)

LobbyMessageInfo必须是RPC

中的最后一个参数