Swift不能在struct中使用任何变量

时间:2018-01-05 20:55:53

标签: swift struct sprite-kit

我有一个结构,Trajectory。

struct Trajectory {

        var invisibleBall: SKSpriteNode!
        var count = Int()
        var copiedNodes = Array<SKSpriteNode>()


    }

当我尝试使用Trajectory中的任何变量时会出现此错误,Instance member 'invisibleBall' cannot be used on type 'GameScene.Trajectory'为什么会这样。之前我曾经多次使用结构。

    Trajectory.invisibleBall = self.childNode(withName: "//invisibleBall")
    //this is where i get the error

2 个答案:

答案 0 :(得分:2)

那是因为您没有从Trajectory创建实例,您应该这样做:

let trajectory = Trajectory()
trajectory.invisibleBall = self.childNode(withName: "//invisibleBall")

或者,如果您非常确定要直接在结构中使用它,那么您应该将invisibleBall声明为 static 属性:

struct Trajectory {

        static var invisibleBall: SKSpriteNode!
        var count = Int()
        var copiedNodes = Array<SKSpriteNode>()
}
然后你就可以:

Trajectory.invisibleBall = self.childNode(withName: "//invisibleBall")

答案 1 :(得分:1)

您需要初始化Trajectory对象。因此,您只需将代码更改为:

let trajectory = Trajectory()
trajectory.invisibleBall = self.childNode(withName: "//invisibleBall")