通过引用传递数组[Swift 3 Xcode 8]

时间:2017-07-30 19:12:39

标签: swift xcode swift3 xcode8

我创建了一个子弹类,我想让它拥有一个名为locateInArray的属性。 locatedInArray存储子弹存储在GameScene类中的数组的引用。唯一的问题是当我添加print语句时,它表明locateInArray与游戏场景中的实际数组相比具有不同的值。无论如何通过引用而不是值传递数组?

通过函数调用传递给子弹实例的数组。

bullet.shoot(from: self.mainCharacter, to: "right", fromPercentOfWidth: 0.5, fromPercentOfHeight: 0.65, addToArray: &playerBulletArray, inScene: self)

在子弹对象中指定为属性的数组。

func shoot(from character: SKSpriteNode, to direction: String, fromPercentOfWidth xPercent: CGFloat, fromPercentOfHeight yPercent: CGFloat, addToArray array: inout[SKBulletsNode?], inScene scene: GameScene) {

    self.gameScene = scene
    self.locatedInArray = array
}

1 个答案:

答案 0 :(得分:1)

你能创建一个包含SKBulletsNode数组作为属性的类,并将这些对象中的一个传递给函数吗?

像这样:

class BulletArray {
    var bullets : [SKBulletsNode]?
}

func shoot(from character: SKSpriteNode, to direction: String, fromPercentOfWidth xPercent: CGFloat, fromPercentOfHeight yPercent: CGFloat, addToArray array: inout BulletArray , inScene scene: GameScene) {
   self.gameScene = scene
   self.locatedInArray = array
}

查看此链接以获取更多信息: Swift: Pass array by reference?