SpriteKit - 节点位置的结构

SpriteKit - Struct for nodes position

我想制作一个声明不同位置的结构。我有许多节点总是使用相同的位置,所以我不想每次都输入相同的 x 值和 y 值,而是只输入 positions.p1.

private struct Positions {
    let P1 = myGameScene.frame.size.width * 0.05
    let P2 = myGameScene.frame.size.width * 0.15
}

现在我得到错误:Instance member frame cannot be used on type myGameScene. myGameScene 是一个 SKScene。

如果我尝试自己。而不是 myGameScene 我收到错误:Value of type NSObject -> () -> myGameScene has no member frame.

需要帮助:-(

使用边界而不是框架。

private struct Positions {
     let P1 = myGameScene.bounds.size.width * 0.05
     let P2 = myGameScene.bounds.size.width * 0.15
}

确实有效

class MyGameScene: SKScene { }

let myGameScene = MyGameScene()

struct XPositions {
    let x0 = myGameScene.frame.size.width * 0.05
    let x1 = myGameScene.frame.size.width * 0.15
}

print(XPositions().x0)

但是让我说这是解决问题的一种奇怪方法:

  1. 您使用的是结构而不是数组
  2. 您需要创建一个结构值来访问与 Positions 的每个值相同的属性
  3. 属性 (P1, P2) 应该是小写...

建议

你为什么不直接在你的场景中添加一个计算的属性?

class MyGameScene: SKScene {
    lazy var positions: [CGFloat] = {
        let factors: [CGFloat] = [0.15, 0.05]
        return factors.map { [=11=] * self.frame.size.width }
    }()
}