2016-03-02 63 views
2

所以就像標題所說的那樣,我的SKTexture並沒有像我期望的那樣改變。SKTexture沒有改變正確

這是我聲明我單身我的播放器類:

static let sharedInstance = NHPlayer() 

我有這樣的功能:

func setSkin(name: String) { 
    print("Before : \(body.texture)") // Print default SKTexture 
    body.texture = atlas.textureNamed("\(name)-body") 
    print("After : \(body.texture)") // print the SKTexture I choose in game 
} 

我把身體像這樣:

func loadAppearance() { 
    let name = getCurrentSkin() 
    print(name) 

    body = SKSpriteNode(texture: atlas.textureNamed("\(name)-body")) 
    addChild(body) 
} 

我我想要使​​用此功能的紋理的名稱:

func getCurrentSkin() -> String { 
    let defaults = NSUserDefaults.standardUserDefaults() 
    var name = defaults.valueForKey("currentSkin") 
    if name == nil { 
     name = "default" 
    } 
    return "\(name!)" 
} 

調用setSkin這裏:

func play() { 
    let defaults = NSUserDefaults.standardUserDefaults() 
    let current = charactersList.filter{ $0.name == nameLabel.text?.lowercaseString } 
    removeFromParent() 
    defaults.setObject(current.first?.name, forKey: "currentSkin") 
    NHPlayer.sharedInstance.setSkin((current.first?.name)!) 
    GameScene.sharedInstance.restart() 
} 

它輸出質感很好的名字,但沒有加載紋理,我不得不關閉遊戲,並重新打開它,讓SKTexture變化的發生。

有關如何解決的任何想法?

如果您需要更多信息,請隨時詢問。

+0

需要看到更多的代碼,是「身體」你應該編輯正確的情況下,是更新/繪製被正確調用等等。現在有很多可能會出錯的地方。 – Knight0fDragon

+0

我編輯了我的第一篇文章 – Miido

+0

你需要給我們提供實際的功能,不要把它縮短爲我們 – Knight0fDragon

回答

0

你確定你沒有在你的播放器類上調用NHPlayer()嗎?

看起來就像當你分配新的紋理,這是肯定的分配,而是到另一個實例,而不是單

+0

就是這樣,我忘了我的gamescene中有一個player = NHPlayer,現在一切正常了:D – Miido