更改用户字符



我正在尝试更改sprite工具包中的用户角色。

我有两个视图,一个是Play视图(实际游戏),另一个是选择角色的视图。

我希望用户从角色视图中选择一个角色,以便在播放视图中他/她可以使用之前选择的角色进行播放。

因此,我尝试使用NSUserDefaults根据字符保存一个数字,如下所示:

        if self.nodeAtPoint(location) == self.poolBanner {
            //change to pool ball
            userDefaults.setInteger(1, forKey: "PBChange")
            poolBanner.setScale(0.9)
            print("Pool Ball selected")
        }
        if self.nodeAtPoint(location) == self.tumbleweedBanner {
            //change the character to tumbleweed
            userDefaults.setInteger(2, forKey: "TWChange")
            tumbleweedBanner.setScale(0.9)
            print("Tumbleweed Ball selected")
        }

该代码来自角色视图,当玩家选择他们想要使用的角色时

现在这个代码来自播放视图:

    if TWNumber == 2{
        hero.texture = SKTexture(imageNamed: "Tumbleweed")
        hero.size = CGSize(width: 60, height: 57)
    }
    else if PBNumber == 1 {
        hero.texture = SKTexture(imageNamed: "PoolBall")
        hero.size = CGSize(width: 60, height: 60)
    }

当我点击以更改角色时,它将保持在我选择的相同角色上。如果我选择poolBall,它会第一次更改,然后更改为tumbleweedBall,它将保持不变。

我认为图像会覆盖它们自己,但如果选择了新图像,我不知道如何忽略最后一个图像。。。

步骤:

  1. 用户选择他们的字符,这个代码被称为:

    //Enum of possible characters, with their sprite texture names too.
    enum GameCharacter: String {
        case Tumbleweed = "Tumbleweed"
        case PoolBall = "PoolBall"
    }
    func characterSelect(type: GameCharacter) {
        let ud = NSUserDefaults.standardUserDefaults()
        //Save the current character in User Defaults
        ud.setObject(type.rawValue, forKey: "Current_Character")
        ud.synchronize()
    }
    //When they choose the character:
    characterSelect(.Tumbleweed) //Or Whatever character you have
    
  2. 游戏场景:加载角色纹理

    func loadCharacter() {
        let ud = NSUserDefaults.standardUserDefaults()
        if let currentCharacter = ud.objectForKey("Current_Character") as? String   {
            hero.texture = SKTexture(imageNamed: currentCharacter)
        } else {
            hero.texture = SKTexture(imageNamed: "Tumbleweed")
        }
    }
    override func viewDidLoad() {
        self.loadCharacter()
    }
    

相关内容

最新更新