首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKTexture未正确更改

SKTexture未正确更改
EN

Stack Overflow用户
提问于 2016-03-03 02:42:34
回答 1查看 56关注 0票数 2

所以正如标题所说,我的SKTexture并没有像我期望的那样改变。

下面是我在player类中声明单例的方式:

代码语言:javascript
复制
    static let sharedInstance = NHPlayer()

我有这个函数:

代码语言:javascript
复制
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
}

我这样叫body:

代码语言:javascript
复制
func loadAppearance() {
    let name = getCurrentSkin()
    print(name)

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

我使用这个函数得到了我想要的纹理的名称:

代码语言:javascript
复制
func getCurrentSkin() -> String {
    let defaults = NSUserDefaults.standardUserDefaults()
    var name = defaults.valueForKey("currentSkin")
    if name == nil {
        name = "default"
    }
    return "\(name!)"
}

在此处调用setSkin:

代码语言:javascript
复制
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更改发生。

对如何修复有什么建议吗?

如果您需要更多信息,请随时询问。

EN

回答 1

Stack Overflow用户

发布于 2016-03-03 22:17:27

您确定没有在player类以外的其他地方调用NHPlayer()吗?

看起来,当你分配新纹理时,它确实是在分配,但是分配给了另一个实例,而不是单例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35755530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档