0

我正在尝试确定在使用 Corona SDK 编写的游戏中处理以下任务的最佳方式和最有效方式。似乎有很多方法可以做事情,以至于变得很混乱,所以我希望这里有人可以提供帮助!

我正在创建一个具有库存系统/谜题等的冒险类型游戏。到目前为止,我开发的思维过程涉及使用单独的“类”来处理游戏的每个特定方面。如InventoryManagement.lua、ObjectManagement.lua、PuzzleManagement.lua等。

只是一个旁注 - 这个游戏真的不涉及物理,但我想要有动画的静态图像(想想打开一扇门或捡起一个物体):

这是我要完成的一个示例:

  • 假设您开始一个新游戏并加载第一个场景。我需要设置玩家的物品栏、房间里的物品、它们的状态、这些东西的图像等等。我假设这些东西可以在第一次游戏加载时默认,然后加载......
  • 然后玩家点击一个钥匙来捡起它——此时钥匙需要出现在他们的库存中,所以现在它将从场景中移除,添加到他们的库存中(通过库存管理?),并且场景将被更新(通过场景管理?)...
  • 从现在开始,钥匙应该不再出现在场景中。
  • 现在说他们点击钥匙并在门上使用它,门应该动画打开并从现在开始保持打开状态。
  • 如果玩家离开房间又回来,钥匙不应该出现。

现在对我来说,每次进入/离开场景时加载/卸载场景是有意义的,但是......如果你这样做,这不会变得内存密集等吗?...如果屏幕上有 30 个对象,是否有更好的方法来处理场景?

希望这很清楚 - 很难找到与这些元素中的每一个相关的具体信息。一切似乎都与物理游戏有关,我似乎无法找到有关如何“在场景中添加钥匙,如果,但不是,如果它已被使用,则为那扇门设置动画”:(

谢谢!

4

2 回答 2

2

在故事板之间跳转时出现意外结果的相同问题。我发现的一件事是

  1. 始终确保Runtime:remove并停止您使用的计时器。当您想要重置所有内容时,另一种选择是创建一个reset.lua文件并在enterScene您使用storyboard.removeScenestoryboard.purgeScene 时(如果您只想摆脱您在内存中装配的所有显示对象scene:createScene)。

另请查看storyboard.RemoveAll()purgeAll()

于 2013-03-20T20:51:45.200 回答
1

您需要在全局空间中制作一些东西(使用 _G)才能在场景之间使用它们。

要在场景之间切换,“故事板”非常好。

但是请注意,如果您使内存占用过多,您将需要使用一些手动内存黑客,主要是,您可能需要在加载场景之前,在清理最后一个场景后多次调用“收集垃圾”,否则你会打一个奇怪的问题:

您加载了场景“A”。

你切换到场景“B”。

游戏“卸载”“A”,但垃圾收集器没有,然后加载“B”,最终结果是“A”+“B”的内存使用。

我在 Corona 制作的这款冒险游戏中,它导致了几次疯狂的崩溃,直到我想出了“收集垃圾”的把戏。

于 2013-02-01T13:25:49.743 回答