使用SKSpritenodes和纹理

我正在尝试编写function,允许用户将“鬼”更改为不同的图像。

这是我的代码:

Ghost = SKSpriteNode(imageNamed: "Ghost17") Ghost.size = CGSize(width: 50, height: 50) Ghost.position = CGPoint(x: self.frame.width / 2 - Ghost.frame.width, y: self.frame.height / 2) Ghost.physicsBody = SKPhysicsBody(circleOfRadius: Ghost.frame.height / 1.4) Ghost.physicsBody?.categoryBitMask = PhysicsCatagory.Ghost Ghost.physicsBody?.collisionBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall Ghost.physicsBody?.contactTestBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall | PhysicsCatagory.Score Ghost.physicsBody?.affectedByGravity = false Ghost.physicsBody?.isDynamic = true Ghost.zPosition = 2 if defaults1.integer(forKey: "Sphere") == 2 { Ghost = SKSpriteNode(imageNamed: "Ghost13") } if defaults1.integer(forKey: "Sphere") == nil! { Ghost = SKSpriteNode(imageNamed: "Ghost2") } self.addChild(Ghost) 

我正在使用UserDefaults在viewContollers之间发送信息。

当我点击button,设置默认1到2时,新的图像popup,但它不像它应该。 我不知道如何解决这个问题,如果你需要更多的信息,请问。

更改纹理时,请尝试使用以下内容:

 Ghost.texture = SKTexture(imageNamed: "Ghost13") 

而不是:

 Ghost = SKSpriteNode(imageNamed: "Ghost13") 

这只会改变节点的纹理属性,而不是重新初始化它。 您可能遇到问题,因为您在重新初始化时重置了节点。

希望这可以帮助!