ios - 在切换条件下加载一些私有变量
问题描述
我正在制作一个简单的 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)
}
解决方案
这应该是你想要的方式。
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 中可用。