Unity和iOS:排在" if"无论情况如何,总是跑步

时间:2014-11-27 17:23:02

标签: c# ios unity3d

我已经处理了这个奇怪的问题了几天,我真的没有想法。

我在Unity for iOS中编程。这是陷入困境的代码片段:

if (!aux.IsDownloaded())
{
    aux.restoreTransaction();
    aux.DownloadItem();
}

真正奇怪的问题是始终执行aux.DownloadItem()。如果条件为真或假,则无关紧要。如果条件为真,则不应该进入' if'但它确实如此!它只是跳过第一行(restoreTransaction)并运行第二行(DownloadItem)。如果条件为假,则它只是正常运行。

为了发现更多的东西,我尝试了几件事:

  • 如果我评论DownloadItem行,调试器会显示它运行restoreTransaction行,无论条件的值如何,但它实际上正在运行DownloadItem,因为下载发生了。
  • 如果我将restoreTransaction行替换为任何其他表达式(在我的情况下,15行Debug.Log(" ARGGG")),它只是跳过所有这些并运行DownloadItem行。

我真的迷路了。我认为它可能是一个数据损坏,所以我删除了我的Unity项目中的Library文件夹并清除了Monodevelop缓存,但它一直在做这个奇怪的事情。

我不知道还有什么可以尝试。任何想法都会受到欢迎,请放下任何猜测,无论它听起来多么愚蠢,因为我真的没有想法,至少我想继续尝试。

编辑:经过一些测试后,设备运行的内容和我在monodevelop中调试的内容之间显然存在差异。也许是Unity 3D生成xCode项目的一个问题?

这是迄今为止我发现的最奇怪的事情。

亲切的问候,

Aernarion

2 个答案:

答案 0 :(得分:0)

欢迎,

(我不能写评论,因为我的声誉,所以如果这不能帮助删除答案)

这不是一个真正的解决方案,但正如你写的那样:

  不管你头脑里听起来多么愚蠢,只要放下任何猜测

如何更改最后一行?你试图用垃圾填充代码,除了有问题的部分。似乎该陈述是真的,然后运行最后一行...如果我是对的,那么你可以在Debug.Log("WEIRDPROBLEM")之后插入一个新行。

希望它有所帮助,对不好的工程和“不评论”感到抱歉,

RAPTOR

答案 1 :(得分:0)

很可能它只是调试器的一个问题而且您的代码很好。您可以通过记录aux.IsDownloaded()的结果来确保它。类似的东西:

bool downloaded = aux.IsDownloaded();
Debug.Log(downloaded);
if (downloaded) {
    ...
}

如果记录了正确的值并且您的调试器踩到了错误的行,那么您在调试器中遇到了一个极端情况,或者由于某种原因,程序集的调试器元数据不同步。