所以就像標題所說的那樣,我的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變化的發生。
有關如何解決的任何想法?
如果您需要更多信息,請隨時詢問。
需要看到更多的代碼,是「身體」你應該編輯正確的情況下,是更新/繪製被正確調用等等。現在有很多可能會出錯的地方。 – Knight0fDragon
我編輯了我的第一篇文章 – Miido
你需要給我們提供實際的功能,不要把它縮短爲我們 – Knight0fDragon