如何通过rpc

时间:2015-06-29 10:58:21

标签: c# dictionary unity3d rpc

所以我正在制作多人游戏。 我已经建立了一些词典来保持分数。 主客户端处理Dictionary的。

主客户端对字典进行更改后(例如,因为某个玩家死亡)并计算出谁处于领先地位。我想将数据发送给客户,以便他们可以在那里更新记分板,等等。

然而,我似乎无法直接通过rpc字典。例如这里

[RPC]
void PassScoresToClients (Dictionary plyScrs, Dictionary teamScrs,int leadingTeamID, int leadingTeamScore){

}

单词Dictionary只会变成红色。

有没有办法可以将这些数据发送给客户?

为了论证,我将举一个简短的例子。 第一个字典使用用户名作为字典密钥保存玩家的杀戮,死亡,助攻和teamID。和得分类型(杀戮,死亡,助攻和teamID)作为辅助密钥。 它的结构如下:

Dictionary<string, Dictionary<string, int> > playerScores;

在需要时创建/填充子词典

public void SetScore (string username, string scoreType, int value)
{
        Init ();
        changeCounter ++;

        if (playerScores.ContainsKey (username) == false) {//if the player has not been recorded in the dictionery yet.
                    playerScores [username] = new Dictionary<string, int> ();// Creates a new dictinerey(sub dictionery) for that player.
        }

        playerScores [username] [scoreType] = value; // the players score is now the value of value
}

第二个词典是一个简单的词典,只是跟踪团队的得分。 它使用teamID作为密钥 它的结构如下:

Dictionary<int, int> teamScores;

字典由主客户端填充,因此客户端只有互补的空字典,直到他们可以接收数据。

那么有没有办法将数据发送给客户?

哦,如果您发布代码,请发表评论。我在很多事情上仍然非常愚蠢,很容易迷失。

1 个答案:

答案 0 :(得分:0)

您应该在RPC上使用通用字典:

[RPC]
void PassScoresToClients (Dictionary<int, int> plyScrs, Dictionary<int, int> teamScrs, int leadingTeamID, int leadingTeamScore){

}

DictionaryDictionay<int, int>不能自动转换。