2

我正在开发一款流氓游戏(iOS/Cocos2d)。我有一个类 Map 的对象,它有一堆 GameObjects。

我有 GameViewController 类。当模型中发生某些事情(生物被杀、玩家移动等)时,我需要通知 GameViewController 这个变化。怎么做?

我看到两个选项:

  1. GameViewController 实例可以是 Map 的委托和每个 GameObject 的委托。
  2. GameViewController 将监听来自 Map 和 GameObjects 的 NSNotifications。

哪种方式更好?为什么?

4

1 回答 1

0

Cocos 是一个强基于单例的库,所以单例方法在 Cocos 游戏中相当普遍。然而,这并不意味着它是合乎逻辑的默认选择。

对于任何程序,您的第二种选择通常是一种更明智、更安全的方法,而不仅仅是 Cocos。NSNotifications 允许您从其他对象通知对象,而不会陷入在程序中传递大量引用或单例的潜在错误状态。如果您可以通过一些通知来实现您的目标,那么这就是您要走的路。

如果你发现你在极端程度上使用 NSNotifications,比如每秒多个通知,那么你应该考虑通过指针在对象之间传递引用,或者将父类或主 Cocos 场景类创建为单例。

请记住,当您涉及单例时,虽然它们很容易实现,但也很容易滥用它们。您不想养成让子类控制其兄弟姐妹的行为的习惯,因为它们可以轻松访问父类和父类的方法。

于 2012-04-09T01:39:49.343 回答