我有一款使用Box2D的iOS游戏。当我在调试模式下运行它一切都很好。当我在发布模式下运行时,所有游戏对象都会加速,似乎游戏对象的质量更高或类似。这很奇怪。
两个版本的帧速率基本相同,所以这不是问题。无论如何,游戏中的所有内容都应该是帧率独立的。
任何想法是XCode中的项目设置可能导致这个?
答案 0 :(得分:3)
当您在调试中运行时,编译器不进行优化,因此二进制文件要大得多,并且代码通常无用工作。在Release中,运行优化器(默认为-Os),它会急剧地发现缩小代码。这是开发人员在测试代码时通常应该使用Release not Debug的原因之一,并且只有在真正需要lldb时才切换到Debug。
编辑:所以有几件事情可以在这里发挥作用。首先,Box2D是一个包含项目还是链接在库中?如果是第一个,请确保它同时具有Debug和Release配置。查看你的和Box2D的Build Settings,看看是否在一个配置或另一个配置中定义了任何内容(也就是你可能找到-DSLOW)或某些设置(或不设置标志)的define语句。啊,和Debug我通常定义DEBUG = 1(在预处理器部分)Box2D(甚至你的代码)可能用于某种目的。
如果找不到另一个构建设置不同,那么您可以通过将调试配置中使用的值从-O0实际更改为-O1,-O2和= Os来查看优化器是否具有影响。同样,您可以将发布设置从-Os更改为-O0。
我要猜测Debug配置中的“DEBUG”设置,Release中的其他定义或优化器是原因,通过使用Debug和Release,您可以找出问题所在。实际上,您甚至可以(临时)将DEBUG = 1添加到Release配置中。