2014-01-24 29 views
0

我在做一個遊戲。客戶端發送一個RPC到服務器,說「把我移到這個實例」。它工作正常,直到我重新啓動我的計算機並重新加載節點/數據庫服務器等。但現在,如果我給它一個字符串它將無法正常工作,如果我不給它一個字符串並在RPC中聲明它執行確切的是,它工作正常。有問題的字符串是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==) 

顯然字符串應該是一個字符串不是一個對象。請幫忙,我已經嘗試過統一的答案,但幾乎不可能在那裏得到答案,因爲他們的網站有點矛盾。

+0

這個問題已經存在了幾天,我仍然無法找到一個解決方案,有人可以請幫忙。我離開大廳服務器運行了一天後又重新運行,直到重新啓動它,現在問題又回來了。 – Jared

回答

0

只是反轉參數的順序是這樣的:

IEnumerator FindGameServerReq(string zoneId, uLobby.LobbyMessageInfo info) 

的LobbyMessageInfo必須在您的RPC最後一個參數