我开始尝试将列表结构转换为字典,但遇到了一些麻烦。我正在修改我的前述语句<代码>
我现在用字典卡在这一行:moveMsg=p.connectionId。ToString() '%' p.playerPosition. x.() '%' p.player位置。ToString() '|';
我得到的错误是:
Assets/Scripts/Server。cs(118,18):错误CS1061:键入系统。收藏。通用的键值对
如何进行修改?
声明字典:
公共字典
词典
// Ask player for their position
if (Time.time - lastMovementUpdate > movementUpdateRate)
{
lastMovementUpdate = Time.time;
string moveMsg = "ASKPOSITION|";
foreach (KeyValuePair <int, Player> p in players)
moveMsg += p.connectionId.ToString() + '%' + p.playerPosition.x.ToString() + '%' + p.playerPosition.y.ToString() + '|';
moveMsg = moveMsg.Trim('|');
Send(moveMsg, unreliableChannel, players);
}
球员级别
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Player
{
public string PlayerName;
public GameObject Avatar;
public int ConnectionId;
public byte[] Tex; // data coming from CanvasController
public string Type; // data coming from CanvasController
public string Id; // data coming from GameManager
public int Strength; // data coming from PlayerController
public int Hitpoints; // data coming from PlayerController
public bool IsAlive; // data coming from PlayerController
// Initial method takes base arguments for testing
public Player(string playerName, GameObject avatar, int connectionID)
{
PlayerName = playerName;
Avatar = avatar;
ConnectionId = connectionID;
}
// Overload method takes all animal arguments
public Player(string playerName, GameObject avatar, int connectionID, byte[] tex, string type, string id, int strength, int hitpoints, bool isAlive)
{
PlayerName = playerName;
Avatar = avatar;
ConnectionId = connectionID;
Tex = tex;
Type = type;
Id = id;
Strength = strength;
Hitpoints = hitpoints;
IsAlive = isAlive;
Debug.Log(id + " : " + type + " created with strength " + strength + ", hit points " + hitpoints + ", and a texture the size of " + tex.Length);
}
}
KeyPairValue只包含两个属性Key和Value
https://msdn.microsoft.com/en-us/library/5tbh8a42(v=vs.110)
你试过:p.Key
而不是p.ConnectionId
和p.Value
而不是p.PlayerPosition
编辑:我使用聚合fct编写了一个小lambda来简化代码。我传递默认值,然后对于dict中的每个项目,它将包含另一个字符串。我还使用字符串插值来避免字符串连接($“{variable}”)。
class Player
{
public Point Position { get; set; }
}
public void Test()
{
var players = new Dictionary<int, Player>();
var msg = players.Aggregate(
string.Empty,
(current, p) => current +
$"{p.Key}%{p.Value.Position.X}%{p.Value.Position.Y}|");
}
你在你的玩家类中有一个连接ID,但是可以访问连接ID。PS.奇怪的是,为什么它会被编译。顺便说一句,你可以使用播放器。Join-a linq扩展
因为您的变量p
是一个KeyValuePair
foreach 循环语句是 Java 1.5 的新特征之一,在遍历数组、集合方面,foreach 为开发者提供了极大的方便。 foreach 循环语句是 for 语句的特殊简化版本,主要用于执行遍历功能的循环。 foreach 循环语句的语法格式如下: 其中, “类型”为集合元素的类型,“变量名”表示集合中的每一个元素,“集合”是被遍历的集合对象或数组。每执行一次循环语句,循环变量就读取集合中的一
本文向大家介绍Java8中forEach语句循环一个List和Map,包括了Java8中forEach语句循环一个List和Map的使用技巧和注意事项,需要的朋友参考一下 在这篇文章中,我将向您展示如何用新的Java 8 forEach语句循环一个List和Map。 1、forEach 和 Map 1.1、常规循环Map常用的方法。 1.2 、在Java 8中, 你可以用forEach + lam
我有一个方法createCompliance响应(),它返回BOLConplationObject对象,在此之前,我将其更改为BOLConplationMono,因为我必须在其中调用另一个反应性服务。但是在这样做之后,我调用该服务的当前服务在第6行和第7行出现错误。 我为其更改了退货类型的另一项服务是
我有这样一种方法,将结果强制转换到(列表),但我的eclipse仍然在抱怨!类型安全:未选中从列表到列表的强制转换
本文向大家介绍字典到Python中的元组转换列表,包括了字典到Python中的元组转换列表的使用技巧和注意事项,需要的朋友参考一下 将集合类型从一种类型转换为另一种类型是python中非常常见的需求。在本文中,我们将看到如何根据字典中存在的键值对创建元组。每个键值对都成为一个元组。因此,最终列表是一个元素为元组的列表。 用 我们起诉字典的items方法,该方法使我们可以遍历每个键值对。然后,我们使