2014-01-24 3 views
0

Я делаю игру. Клиент отправляет RPC серверу, говоря «переместите меня в этот экземпляр». Он работал нормально, пока я не перезапустил свой компьютер и не перезагрузил сервер узлов/базы данных и т. Д. Но теперь, если я дам ему строку, это не сработает, если я не дам ему строку и не объявляю ее в RPC, ТОЧНОЕ ОЗНАКОМЬТЕСЬ, это прекрасно работает. Строка, о которой идет речь, is zoneId.RPC не может принять строку?

Это 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==) 

Очевидно, что строка должна быть string не объект. Пожалуйста, помогите, я попробовал ответы на единство, но почти невозможно получить ответ там, потому что их сайт немного оксюморон.

+0

Эта проблема существовала в течение нескольких дней и до сих пор я не могу найти решение, кто-то может помочь. Я покинул лобби-сервер, работающий в течение дня, и он снова работал, пока я не перезапустил его, теперь проблема вернулась. – Jared

ответ

0

Просто инвертировать порядок следования параметров таким образом:

IEnumerator FindGameServerReq(string zoneId, uLobby.LobbyMessageInfo info) 

LobbyMessageInfo должен быть последним параметром в вашей RPC

Смежные вопросы