【发布时间】:2016-03-02 18:42:34
【问题描述】:
正如标题所说,我的 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 发生变化。
关于如何解决的任何想法?
如果您需要更多信息,请随时询问。
【问题讨论】:
-
将需要查看更多代码,“body”是否是您应该编辑的正确实例,是否正确调用了更新/绘制等。现在可能会出现很多问题。
-
我编辑了我的第一篇文章
-
你需要提供给我们实际的功能,不要为我们缩短它
-
对不起,我希望现在更清楚了
-
oy,一个单身人士,不确定这是否是您想在这里采取的方法。你确定你的单身人士没有改变吗?
标签: xcode swift sprite-kit