【问题标题】:Corona SDK - Managing Game State/Objects/Inventory System/Sprite AnimationCorona SDK - 管理游戏状态/对象/库存系统/Sprite 动画
【发布时间】:2013-01-31 20:23:04
【问题描述】:

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

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

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

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

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

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

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

谢谢!

【问题讨论】:

    标签: coronasdk corona-storyboard


    【解决方案1】:

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

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

    也可以查看storyboard.RemoveAll()purgeAll()

    【讨论】:

      【解决方案2】:

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

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

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

      您加载了场景“A”。

      你切换到场景“B”。

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

      this adventure game I was making in Corona 上,它导致了几次疯狂的崩溃,直到我想出了“收集垃圾”的把戏。

      【讨论】:

      • 很好的建议 - 谢谢你的速度! ...如果您有任何其他教程或帮助管理动画和跟踪对象,我将不胜感激!
      猜你喜欢
      • 2011-03-15
      • 2020-07-17
      • 2016-03-21
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      • 2016-07-31
      • 2015-01-07
      相关资源
      最近更新 更多