我目前正在开发一款将为玩家随机生成地牢的游戏。这是由从不同文件调用的一大堆不同方法组成的。我似乎让代码能够计算出门的另一侧有多少可用空间。
但是有一个问题。该代码似乎仅在我使用 CCLOG 输出到控制台时才有效。我在没有测试的情况下编写了一大段代码,然后决定逐步完成它以查看代码是如何工作的(我想我会让它在没有错误的情况下运行,接下来我将检查我的值)。
在我确定代码已成功检查每个方向的可用空间并列出它检查过的位置后,我决定要删除 CCLOG 输出。不幸的是,这样做会导致代码停止工作。
//First check "forward"
bottom = CGPointMake(startLocation.x + forwardDirectionModifier.x, startLocation.y + forwardDirectionModifier.y);
top = bottom;
do
{
currentLocation = CGPointMake(top.x + forwardDirectionModifier.x, top.y + forwardDirectionModifier.y);
tileType = [tileCache getTileType:currentLocation];
if (tileType == TileTypeFiller)
{
top = currentLocation;
CCLOG(@"Top location is %@", NSStringFromCGPoint(top));
}
} while (tileType == TileTypeFiller || top.y != 63);
这是代码中的一小段;这是我认为最有可能出现问题的代码部分。本质上的问题是,如果我注释掉或删除该行CCLOG(@"Top location is %@", NSStringFromCGPoint(top));
,它将停止工作。
以下是更多细节:
- 我有好几小块这样的代码,只要我CCLOG在每一个,它就能移动到下一个。如果我要注释掉其中的任何一个,它将停止进入下一个块。
- 我可以更改 CCLOG 以输出任何内容,它仍然可以工作,它必须在那里。
- 我试过清理项目。
- 还有更多的 CCLOG 没有在任何循环中使用,它们可以被删除而不会产生任何后果。
有人对此有解决方案吗?据我所知,无论我是否将某些内容输出到控制台,它都不应该影响代码是否会执行。
提前致谢。
编辑:在 Ben Trengrove 的建议下,我正在添加更多使用 CCLOG 的示例。
此代码紧跟前面列出的代码。
//Check left relative to door
farLeft = CGPointMake(startLocation.x + leftDirectionModifier.x, startLocation.y + leftDirectionModifier.y);
do
{
currentLocation = CGPointMake(farLeft.x + leftDirectionModifier.x, farLeft.y + leftDirectionModifier.y);
tileType = [tileCache getTileType:currentLocation];
if (tileType == TileTypeFiller)
{
farLeft = currentLocation;
CCLOG(@"Far Left location is %@", NSStringFromCGPoint(farLeft));
}
} while (tileType == TileTypeFiller || farLeft.x !=0);
//Check forwards from far left
top2 = farLeft;
do
{
currentLocation = CGPointMake(top2.x + forwardDirectionModifier.x, top2.y + forwardDirectionModifier.y);
tileType = [tileCache getTileType:currentLocation];
if (tileType == TileTypeFiller)
{
top2 = currentLocation;
CCLOG(@"Top2 location is %@", NSStringFromCGPoint(top2));
}
} while ((tileType == TileTypeFiller)|| (top2.y != 63));