【问题标题】:SKTexture doesn't change properlySKTexture 没有正确改变
【发布时间】: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


【解决方案1】:

你确定你没有在你的播放器类之外的其他地方调用 NHPlayer() 吗?

看起来当您分配新纹理时,它肯定会分配,但分配给另一个实例而不是单例

【讨论】:

  • 就是这样,我忘了我的游戏场景中有一个玩家 = NHPlayer,现在一切正常:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 2020-04-26
  • 2020-02-09
  • 1970-01-01
  • 2017-12-26
  • 2015-03-31
相关资源
最近更新 更多