我正在处理一段代码,到目前为止一切似乎都正常工作,但由于某种原因,我有一个foreach循环,在结束前迭代84次。我想在循环中添加更多代码来移动我正在迭代的图块,但是它会运行84次移动代码并将其抛出世界坐标。
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:添加了我在循环中调试日志的链接,以准确显示正在发生的事情。
答案 0 :(得分:0)
你在更新中呼叫你的foreach,这不能只工作一次,每个帧都有效。但84次是非常高的数字。 您可以使用单个标志来控制并仅运行一次。
doLoop = true;
if (doLoop)
{
doLoop = false;
//my loop script
}
答案 1 :(得分:0)
我想出了这个问题,所以我将这个脚本附加到游戏中的每个tile对象上。因此,自创建了84个图块以来,脚本中的所有内容都会运行84次。
感谢所有的帮助!