【问题标题】:How can I remove sprites when they are outside viewport, but then add them again if I return to their location to save memory当精灵在视口之外时如何删除它们,但是如果我返回它们的位置以节省内存,然后再次添加它们
【发布时间】:2020-10-03 12:46:58
【问题描述】:

我正在创建一个像无冬之夜这样的开放世界 RPG。但我担心记忆,如果我只是用基于物理的精灵节点填充一个巨大的世界,我将没有任何记忆用于其他任何东西。

为了解决这个问题,我想在精灵远离视口时移除它们,然后在靠近它们的位置时重新添加这些精灵。

我怎样才能做到这一点?

感谢所有花时间帮助我的人,谢谢!

【问题讨论】:

  • 你的问题太宽泛了。您可能应该尝试在gamedev.stackexchange.com 中询问
  • @sangony 抱歉,但是如何根据玩家位置询问如何添加和删除精灵太宽泛了。是不是因为我提到了我想这样做的原因是为了节省内存? (提示人们解决这个问题导致更多的讨论帖子)如果是这样,我将删除以节省内存部分。尽管我希望牢记记忆,而不仅仅是随机的 .remove 这个 / 。添加一个if更新函数
  • @sangony 谢谢你的链接。我不知道他们是游戏开发堆栈交换
  • 问一个关于 SO 的问题真的很令人沮丧。我自己去过那里。您的问题很广泛,因为它有许多可能的解决方案,因此它部分基于意见。答案还必须考虑到代码中发生的所有其他事情......你猜对了......非常广泛。这更详细地解释了它stackoverflow.com/help/asking。至于其他站点,有很多堆栈交换。链接在这里stackexchange.com/sites
  • @sagony 哦,好吧,这有道理 :(。感谢您的精彩回复!不幸的是,游戏开发人员似乎已经死了。所以当我尝试自己并遇到更具体的问题时,我会回来关于为什么我正在尝试的东西没有按照我想要的方式工作的问题。先做我的菜单

标签: ios swift memory-management sprite-kit


【解决方案1】:

您可以将所有数据存储在像 CoreData 这样的数据库中,并带有您需要的确切参数,例如您需要的状态和位置。

然后您可以创建一个方法来获取具有半径的特定位置上的所有对象,并在玩家移动或需要检查其他站点上的任务等内容时使用此方法,获取这些对象并与当前对象进行比较,再次在正确的站点上放置新的并删除旧的(它们可能不在半径上或由于其他原因消失)

这是一种复杂的方法,但它可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2018-12-08
    相关资源
    最近更新 更多