【发布时间】:2009-12-02 17:26:56
【问题描述】:
让我看看我是否能清楚地表达我想要做什么......我将把它提炼到核心问题。
我有一个objective-c 程序和一个c 回调函数。上下文是我在 iphone sdk 中使用 cocos2d 和花栗鼠物理。我想做的是在子弹和怪物发生碰撞时更新“分数”。一切正常,除了更新分数。
游戏逻辑在 obj-c 中,但实际的碰撞逻辑在 c 函数中完成,当发生碰撞时会调用该函数。例如,我在那里渲染了碰撞的火焰/爆炸。我也想更新分数。
问题来了: 但是 score 是“GAME”对象的一个实例变量,我看不到那个实例变量。我想我可以通过引用将另一个参数传递给 c 函数,称为 &addscore 或其他东西,但想知道是否有更明显的方法可以做到这一点,因为除了 'score' 之外可能还有一堆其他变量必须在碰撞。
网络是我需要对象中的变量才能被 c 函数看到,反之亦然:那些在函数中设置的变量才能在对象中看到。
提前致谢。
【问题讨论】:
-
请注意,当您使用 Xcode 编译代码时,它实际上会编译为 Objective-C 或 Objective-C++。所以我们喜欢称之为“C 回调函数”,将能够在其中使用Objective-C 语法。所以你可以只传递你的对象,或者使用单例。
标签: iphone c objective-c cocos2d-iphone chipmunk