for循环总是执行一次

Fan4i

简短的信息图片,我的代码做了什么: 在此处输入图片说明

这是我的代码:

private void CheckObjectAttackPoints(Point AttackPoint){
    Point ObjectAttackPoint = AttackPoint;
    ObjectAttackPoint.X -= 1;
    int count=0; //This variable for reading how many tiles are false
    //Check tiles active and ObjectAttackPoint is exist in List
    for (int i=0; i < 1;i++) {
        if (GameManager.AllPoints.Contains (ObjectAttackPoint)) {
            if (!GameManager.TileColliders [ObjectAttackPoint.X, ObjectAttackPoint.Y].activeSelf) {
                count++;
                ObjectAttackPoints [i] = ObjectAttackPoint;
                Debug.Log (ObjectAttackPoints [i].X +", " + ObjectAttackPoints [i].Y);
            }
        }
        if (i == 1) {
            break;
        }
        ObjectAttackPoint.X += 2;
    }

    if (count > 0) {
        Debug.Log ("Object can attack " + count + " points");
    }

}

因此,该方法需要AttackPoint已经AttackPoint.Y-1有价值,我们只需要检查其中是否AttackPoint.X存在List并检查此时对象是否处于活动状态即可。在方法开始时,AttackPoint.X将其值减小1。

我的问题是,即使两个磁贴处于非活动状态,控制台也仅返回一个点(示例图像:0,0和0,2磁贴处于非活动状态,控制台仅返回count = 1且具有Point 0,0的磁贴),这意味着方法仅检查一个图块,并且我的代码有错误,但是我不知道它在哪里。有人能帮我吗?

加兰迪尔

您的for循环始终完全执行一次,方法的代码与此等效:

private void CheckObjectAttackPoints(Point AttackPoint) {
    Point ObjectAttackPoint = AttackPoint;
    ObjectAttackPoint.X -= 1;
    int count = 0; //This variable for reading how many tiles are false
                   //Check tiles active and ObjectAttackPoint is exist in List
    if (GameManager.AllPoints.Contains(ObjectAttackPoint)) {
        if (!GameManager.TileColliders[ObjectAttackPoint.X, ObjectAttackPoint.Y].activeSelf) {
            count++;
            ObjectAttackPoints[0] = ObjectAttackPoint;
            Debug.Log(ObjectAttackPoints[0].X + ", " + ObjectAttackPoints[0].Y);
        }
    }
    ObjectAttackPoint.X += 2;

    if (count > 0) {
        Debug.Log("Object can attack " + count + " points");
    }
}

如果您想循环浏览的所有元素ObjectAttackPoint,则应使用

如果是List

for (int i=0; i < ObjectAttackPoint.Count;i++)

如果是array

for (int i=0; i < ObjectAttackPoint.Length;i++)

编辑无论如何break条件的使用是什么i==1即使您扩展了for循环,也if将在两个循环之后(即在fori == 0执行之后)完全中断循环i == 1您应该更深入地解释什么ObjectAttackPoints

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章