所以我正在制作多人游戏。 我已经建立了一些词典来保持分数。 主客户端处理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;
字典由主客户端填充,因此客户端只有互补的空字典,直到他们可以接收数据。
那么有没有办法将数据发送给客户?
哦,如果您发布代码,请发表评论。我在很多事情上仍然非常愚蠢,很容易迷失。
答案 0 :(得分:0)
您应该在RPC上使用通用字典:
[RPC]
void PassScoresToClients (Dictionary<int, int> plyScrs, Dictionary<int, int> teamScrs, int leadingTeamID, int leadingTeamScore){
}
Dictionary
和Dictionay<int, int>
不能自动转换。