这是我的代码:
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.Y-1值的AttackPoint,我们只需要检查List中是否存在AttackPoint.X并检查此时对象是否处于活动状态.在方法启动时,AttackPoint.X将其值减1.
我的问题是,即使两个图块不活动,控制台也只返回一个点(示例图像:0,0和0,2图块不活动,控制台仅返回count = 1并且使用点0,0图块),这意味着方法只检查一个tile并且我的代码有错误,但我无法理解它在哪里.
有人能帮我吗?
解决方法:
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++)
如果它是一个数组:
for (int i=0; i < ObjectAttackPoint.Length;i++)
编辑:当i == 1时,休息条件的用途是什么?即使你扩展了for循环,if会在两个循环之后完全打破循环(即在i == 0和i == 1之后执行它).你应该更深入地解释什么是ObjectAttackPoints.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。