C# 代码在foreach循环中迭代84次,unity3d
我正在编写一段代码,到目前为止,一切似乎都正常工作,但出于某种原因,我有一个foreach循环,它在结束之前迭代了84次。我想向循环中添加更多代码来移动我正在迭代的磁贴,但它运行了84次移动代码,并将其从世界坐标中抛出C# 代码在foreach循环中迭代84次,unity3d,c#,unity3d,C#,Unity3d,我正在编写一段代码,到目前为止,一切似乎都正常工作,但出于某种原因,我有一个foreach循环,它在结束之前迭代了84次。我想向循环中添加更多代码来移动我正在迭代的磁贴,但它运行了84次移动代码,并将其从世界坐标中抛出 void Update () { if (Input.GetMouseButtonDown (0)) { var mousePos = Input.mousePosition; mousePos.z = 0f; mouseP
void Update () {
if (Input.GetMouseButtonDown (0)) {
var mousePos = Input.mousePosition;
mousePos.z = 0f;
mousePos = Camera.main.ScreenToWorldPoint (mousePos);
clickedX = boardScript.RoundToScale(mousePos.x);
clickedY = boardScript.RoundToScale(mousePos.y);
}
if (Input.GetMouseButtonUp (0)) {
boardScript.movingLeft = false;
boardScript.movingRight = false;
boardScript.movingUp = false;
boardScript.movingDown = false;
tempList.Clear ();
//This is the foreach loop that is iterating 84 times
foreach (TileInfo tile in tileInfo) {
if (tile.tileLocation.y == clickedY) {
Vector3 clickedLocation = tile.tileObject.transform.position;
Debug.Log ("we landed at: " + clickedLocation.x + ", " + clickedLocation.y);
}
}
return;
}
if (Input.GetMouseButton (0)) {
if (Input.GetMouseButtonUp (0)) {
return;
}
float mouseMoveX = Input.GetAxis ("Mouse X");
float mouseMoveY = Input.GetAxis ("Mouse Y");
if (mouseMoveX < 0) {
boardScript.movingLeft = true;
boardScript.movingRight = false;
}
if (mouseMoveX > 0) {
boardScript.movingLeft = false;
boardScript.movingRight = true;
}
foreach (TileInfo tile in tileInfo) {
if (tile.tileLocation.y == clickedY) {
tile.tileObject.transform.Translate (mouseMoveX, 0, 0);
}
}
}
}
如果您需要任何其他部分的代码或任何其他让我知道,我在这方面是新手,仍在学习
编辑:澄清了我问的问题
Edit2:添加了一个到调试日志的链接,我在循环中有这个链接,以准确地显示正在发生的事情
你正在更新中调用你的foreach,这不是只工作一次,而是每帧工作一次。但84倍是一个非常高的数字。 您可以使用单个标志进行控制,并且只能运行一次
doLoop = true;
if (doLoop)
{
doLoop = false;
//my loop script
}
我发现了这个问题,所以我把这个脚本附加到游戏中的每个瓷砖对象上。因此,脚本中的所有内容都将运行84次,因为创建了84个分片
谢谢大家的帮助 您得到的错误是什么?tileInfo的长度是多少?这会引发一些代码错误,我想添加您试图添加的代码,以及这会导致哪些错误。目前,我们只能说tileInfo中有84项,但这可能不是您想要知道的。tileInfo的长度是84,即使是相同的,也不应该重复相同的次数。您必须复制并粘贴错误,伙计!单击问题下方的Edit(编辑)即可执行此操作。这并没有解决问题,但对于每个true语句,它仍会在循环中迭代84次。如果TileInfo长度为84,则foreach代码运行84次是正确的。你需要修复你的状况来做你需要或不需要的事情。