1

场景在 Cocos2d 中的作用是什么?

场景实例化图层,例如 GameEngineLayer、HUDLayer 等。

我猜 GameEngineLayer 类可以在场景之间是相同的,但是在不同的场景中会有不同的对象。

在场景 1 中可能有一个圣诞老人和一个鲁道夫,而在场景 2 中只有两个圣诞老人。场景 1 是否应该实例化一个圣诞老人和一个鲁道夫,并将它们在游戏对象列表中传递给它的游戏引擎实例?场景二按照相同的模式实例化两个圣诞老人?

场景是否也应该将事件列表传递给它们各自的带有时间戳事件的 gameEngine 实例?例如,圣诞老人会在一分钟后喂鲁道夫?

做这种事情是现场的责任吗?

我一周前开始玩cocos2d/box2d游戏,所以我是初学者。我已经阅读了很多示例,但它们通常在 HelloWorldLayer 类中编写所有代码。:)

添加示例: http ://www.raywenderlich.com/4666/how-to-create-a-hud-layer-with-cocos2d 场景ActionLayer.mm 中定义。为什么??为什么没有实例化 ActionLayer 的 Scene1.m?

4

1 回答 1

0

cocos2d 中有 CCScene 的唯一原因是 CCDirector 需要它作为 runWithScene 和 replaceScene 等方法的基类。除此之外,CCScene、CCLayer 和 CCNode 几乎是相同的。

您可以赋予场景、图层、节点、精灵等任何您想要的角色。

但通常场景会承担当前活动游戏对象(节点)的状态管理器的角色。一个常见的用例是将场景声明为单例,以便任何子节点都可以访问场景的基本方法,例如发送其他不相关的节点消息,或检查游戏是否结束等。

对于传播事件,我赞成向下传递事件,因为没有像 UIKit 中那样简单的方法来传递事件。然而,这取决于你喜欢什么样的活动和什么样的设计。

圣诞老人是否向鲁道夫发送消息以喂它,或者鲁道夫经常问圣诞老人是否有东西吃,也取决于你。这两种方法各有利弊。

很多例子之所以在 CCLayer 类中实例化 CCScene 对象,仅仅是因为 Cocos2D 必须要有一个场景。就我个人而言,我认为这是一个糟糕的例子,多年来已成为事实上的标准。最好总是创建一个 CCScene 类,并在其中创建您想要的所有图层和其他节点。它会使场景和图层以及其他节点之间的关系更加明显。事实上,有许多项目的场景类只是包含一个运行所有代码的单一层。

于 2011-12-11T22:07:18.290 回答