【问题标题】:SKNodes don't show in sceneSKNodes 不在场景中显示
【发布时间】:2023-04-02 06:09:01
【问题描述】:

我已经设置好了场景,一切都运行良好。看起来像这样:

但是控制器是在 Main.storyboard 中设置的,我想摆脱它。所以我做了这样的事情:

    window = UIWindow(frame: UIScreen.main.bounds)
    window?.makeKeyAndVisible()
    window?.rootViewController = GameViewController()

在 appDelegate 和这个:

override func loadView() {
    super.loadView()
    self.view = SKView()
}

在 GameViewController 中加载它。第一次加载场景,但只有绿色背景,没有其他节点。 (节点计数器显示正确的节点数。)

所以我尝试将ignoresSiblingOrder 设置为true 和false,scene.scaleMode 的所有选项和我取得的最佳结果是scene.scaleMode = .resizeFill。看起来像这样:

编辑: 圈子的位置:

greenOne.position = CGPoint(x: greenOne.radius + sticksOffset, y: greenOne.radius + sticksOffset)
redOne.position = CGPoint(x: self.frame.maxX - redOne.radius - sticksOffset / 2, y: view.bounds.size.height / 2)

试过了,redOne 出现在绿色旁边

redOne.position = CGPoint(x: redOne.radius + 100, y: 200)

视图似乎不适合屏幕并且太大了。

【问题讨论】:

  • 所以只有绿色圆圈和背景显示?
  • 是的,只有绿色的,虽然所有的圆圈都有相同的设置..
  • 我明白了,您能提供更多代码吗?也许展示圈子是如何设置的。
  • 哦,大概是找到问题了——绿圈的位置只是做了一些偏移。其他人的位置有self.frame.maxX。你怎么看? (我会在一分钟内发布代码)
  • 绿色定位应该没问题。如果您不指定位置,它将自动将对象放在位置 0,0。您是否检查过您的对象是否分配了 zPosition/

标签: ios swift sprite-kit


【解决方案1】:

通过更改 GameViewController 中的视图初始化解决:

override func loadView() {
    super.loadView()

    self.view = SKView(frame: UIScreen.main.applicationFrame)
}

旧版视图的宽度和高度为零,因此 GameScene 没有任何尺寸。

【讨论】:

  • applicationFrame property is deprecated 从 iOS 9.0 开始。你可能想使用UIScreen.bounds,或者只是self.view = SKView(frame: self.view.frame)
猜你喜欢
  • 1970-01-01
  • 2022-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多