- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
正如标题所说,我的 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
}
我这样称呼 body :
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 发生变化。
关于如何修复的任何想法?
如果您需要更多信息,请随时询问。
最佳答案
您确定您没有在播放器类以外的其他地方调用 NHPlayer() 吗?
看起来当您分配新纹理时,它确实在分配,但分配给另一个实例而不是单例
关于xcode - SKTexture 没有正确改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35755530/
我在这样的类中定义了一个 SKTexture 数组: var walking: Array = [] 然后我在同一个类中有一个函数返回该数组的一个元素: func running() -> SKTex
我有一个问题,在过去的几个小时里我一直在绞尽脑汁。我正在创建一个平铺 map ,作为平铺的纹理,我有一些 Sprite 表。 我可以使用以下 spritesheet 来演示我的问题: 现在我使用 SK
有什么方法可以让 SKTexture 动画化(假设它是一个红色方 block ),这样就可以像页面一样从左到右“剥离”,露出另一个 SKTexture 下面(比如说一个蓝色方 block )? 示例:
我有一个图像集,它们是 80 x 80。但是 SKTexture 说有些帧是 33x80,尽管它们显然是 80x80。怎么了?我的动画在运行时看起来很不对劲。 代码如下: SKTextureAtlas
for building in self.buildingArray { if building.contains(location) { upgradeArr
是否有可能从 SKSpriteNode 的 SKTexture 获取当前图像名称? 我是 SpriteKit 的新手,我正在编写一个小游戏。我需要检测忍者何时会击中敌人。像这样 我正在做 SKActi
这个问题在这里已经有了答案: Is it possible to make an Array extension in Swift that is restricted to one class?
正如标题所说,我的 SKTexture 并没有像我期望的那样改变。 这就是我在玩家类中声明单例的方式: static let sharedInstance = NHPlayer() 我有这个功
也许这很容易,但我迷路了。 我有一个项目,我必须制作一个使用 8 个 jpg 模拟页面打开的全屏动画。所以我正在做的是: 我有一个全屏显示的 SKSpriteNode 制作一个包含 8 个 SKTex
也许这很容易,但我迷路了。 我有一个项目,我必须制作一个使用 8 个 jpg 模拟页面打开的全屏动画。所以我正在做的是: 我有一个全屏显示的 SKSpriteNode 制作一个包含 8 个 SKTex
SKEffectionNodes 有一个 shouldRasterise “开关”,可以将它们烘焙到位图中,并且在受效果影响的底层节点发生更改之前不会更新它们。 但是我找不到从这个光栅化“图像”创建
我正在尝试在 SpriteKit 中制作拼图游戏。为了让事情变得更容易,我使用 9x9 方形瓷砖板。每个图 block 上都有一个 childNode,其中包含来自该区域的图像。 但这就是我的问题的开
我正在制作一个主角旋转的游戏,但是,我想使用 SKTexture 为角色 Sprite 节点设置自定义边界。然而,当我这样做时,我的角色不会旋转。当我使用常规的circleOfRadius(因为我的
我的问题是,当我玩游戏时,即使敌人没有触及我的角色,而是飞得离他很近,我也会失去生命。我了解到问题是我角色的透明空间与敌人的透明空间接触了。 我想按照 SKPhysicsBody documentat
我正在尝试为动画中的单个 SKTextures 设置持续时间。 armsAtlas 纹理图集下方。我想将 upTexture 随机设置为持续 1-4 秒,然后将 downTexture 设置为持续 0
我正在尝试为游戏创建背景并有两个背景图像。我可以使用两个不同的 SKSpriteNode()、SKTexture、SKAction.sequence..etc 和一些数学将它们拼接在一起,但结果有点不
我目前在 SpriteKit 和 SKTexture 预加载方面遇到奇怪的间歇性问题。我有多个图像数组,我按以下格式预加载: - (NSDictionary *)loadTexturesWithNam
I've now filed a bug for the issue below. Anyone with a good workaround? 我尝试将 SKTexture 保存到文件中,然后再次加
在 SpriteKit 中,如果你使用 [SKTexture textureWithImageNamed:] 方法加载图像,它会首先搜索你的包,然后是图集,如果找不到你的纹理,它会创建一个占位符图像并
我正在使用带有图像的 SKTexture 并设置 SKPhysicsBody。像那样: var moleTexture = SKTexture(imageNamed: "moleTop1") left
我是一名优秀的程序员,十分优秀!