首页 > 解决方案 > 在切换条件下加载一些私有变量

问题描述

我正在制作一个简单的 iOS 游戏,但遇到了一些问题。事实上,我为我的元素创建了不同的类:行星、子弹、背景和小行星。但是,当我尝试在开关条件下(来自 GameScene)初始化它们时,我收到错误消息“预期声明”。

变量“lvlSelected”是全局变量,表示玩家(来自其他场景)询问的关卡。

这是我的开关代码:

 switch lvlSelected {
case 1 :
private var planet = Planet(imageName: "Planet1")
private var bullet = Bullet(imageName: "Bullet1")
private var background = Background(imageName: "Background1")
private var asteroide = Asteroides(img: "Asteroid1")

case 2 :
private var planet = Planet(imageName: "Planet2")
private var bullet = Bullet(imageName: "Bullet2")
private var background = Background(imageName: "Background2")
private var asteroide = Asteroides(img: "Asteroid2")

default :
private var planet = Planet(imageName: "Planet")
private var bullet = Bullet (imageName: "Bullet")
private var background = Background(imageName : "Background")
private var asteroide = Asteroides(img."Asteroid")
}

谢谢你的帮助


这是我的星球课程:

class Planet:SKSpriteNode {

init(imageName: String){

    let texture = SKTexture(imageNamed : imageName)
    super.init(texture: texture, color: .clear, size: texture.size())

    self.physicsBody = SKPhysicsBody(circleOfRadius: self.size.width/2, center: self.anchorPoint) 
    self.physicsBody!.affectedByGravity = false 
    self.physicsBody!.categoryBitMask = GameScene.physicsCategories.planet
    self.physicsBody!.collisionBitMask = GameScene.physicsCategories.none
    self.physicsBody!.contactTestBitMask = GameScene.physicsCategories.asteroid

}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}
 func addPlanet(parent: GameScene) {
    self.setScale(0.55)
    self.position = CGPoint(x: parent.size.width / 2, y: -self.size.height)
    self.zPosition = 2
    self.anchorPoint = CGPoint(x: 0.5, y: 0.5)
    parent.addChild(self)
}

标签: iosswiftsprite-kit

解决方案


这应该是你想要的方式。

private var planet = Planet(imageName: "Planet")
private var bullet = Bullet (imageName: "Bullet")
private var background = Background(imageName : "Background")
private var asteroide = Asteroides(img."Asteroid")

switch lvlSelected {
case 1 :
  planet = Planet(imageName: "Planet1")
  bullet = Bullet(imageName: "Bullet1")
  background = Background(imageName: "Background1")
  asteroide = Asteroides(img: "Asteroid1")
break
case 2 :
  planet = Planet(imageName: "Planet2")
  bullet = Bullet(imageName: "Bullet2")
  background = Background(imageName: "Background2")
  asteroide = Asteroides(img: "Asteroid2")
  break
default :
  break
}

如果您在 switch case 中声明 var ,则仅在该 case 中可用。


推荐阅读