【问题标题】:GKRTree doesn't want to work at all, any other similar method?GKRTree 根本不想工作,还有其他类似的方法吗?
【发布时间】:2020-05-30 22:36:08
【问题描述】:

我正在制作一个游戏,我需要在一定半径内定义爆炸半径内的对象。首先,我正在通过所有对象之间的距离,但我看到 GameplayKit 中有 GKRTree 类。但是经过多次尝试,它根本不想工作。在任何情况下它都只返回空数组。我想知道,是 GKRTree 类坏了还是什么。如果是,是否有任何其他方法可以在 swift 或 github 中执行与 GKRTree 相同的操作。因为我不想计算距离,因为它可以使用很多 cpu。 谢谢

编辑:我尝试了这个答案https://stackoverflow.com/a/38655862/11687591 中描述的内容,但它不起作用。并且没有关于这个问题的其他解决方案。有一些链接,有人在谈论损坏的 gkrtree 并且没有答案。 https://www.reddit.com/r/swift/comments/63frk6/does_anyone_have_a_working_example_of_gkrtree/ https://twitter.com/StayOnTheMove/status/1067067053419520000?s=20 就这样。我尝试过的一件事是我创建了 2 个圆圈。其中一个是不动的,并且一直处于一个位置。另一个正在移动到我的触摸位置。第二个比另一个小。较大的有点透明,所以我可以看到其他圆圈。我还使用 print() 来查看代码中发生的所有事情。毕竟,即使明显存在一个圆圈在另一个圆圈内的情况,gkrtree.entities 方法也不起作用,它会返回空数组。

【问题讨论】:

  • 用您尝试过但无效的方法更新您的问题。没有这些信息,没有人可以回答您的问题。说“但经过多次尝试,它根本不想工作。”没有足够的信息让任何人帮助你。
  • @MarkSzymczyk 完成。

标签: swift sprite-kit gameplay-kit


【解决方案1】:

对于它的价值,GamePlayKit.GKRTree 最近对我来说在 Xcode 11.5+ 中失败了。下面一行,

import GameKit

class blah {
  private var searchTree: GKRTree<RouteSegment>?
  public init() {
    searchTree = GKRTree.init(maxNumberOfChildren: 3)
  }
}

使用 let 表达式也会得到一个 nil 值。

编辑:

它返回 nil 的原因是因为我在项目的链接阶段没有 GameplayKit。呃。默认情况下,所有 iOS 框架都在搜索路径上,这并不意味着它们将在运行时可用。我不确定苹果为什么选择这种机制。当我将汇编代码步骤跟踪到 init() 函数时,我发现它只是返回 nil; API 中必须有一些存根。

我的解决方案:确保 GameplayKit 处于项目设置中的链接二进制文件阶段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-07
    • 2023-02-20
    • 2019-06-29
    • 1970-01-01
    • 2010-11-03
    • 2018-08-16
    • 2016-03-25
    • 1970-01-01
    相关资源
    最近更新 更多