我正在使用 SpriteKit 编写一个小游戏,我在我的 SKScene 中添加了一个 SKLabelNode,初始文本仅为“0”。当我尝试使用以下方法更新此 SKLabel 的文本时:
func updateScoreLabel() {
scoreNumber++
scoreLabel.text = String(scoreNumber)
}
整个 SKScene 在被调用和更新之间有一个短暂的停顿。但是,这仅在第一次调用时发生,因此如果我第二次运行此操作,例如在随后的任何场景暂停时更新 scoreLabel,则不会发生暂停。
触发方法调用的是... CC 是输入为 Int 的物理体 categoryBitMasks 的枚举
func isCollisionBetween(nodeTypeOne: CC, nodeTypeTwo: CC, contact: SKPhysicsContact) -> Bool {
let isAnodeTypeOne = contact.nodeA.physicsBody!.categoryBitMask == nodeTypeOne.rawValue
let isAnodeTypeTwo = contact.nodeA.physicsBody!.categoryBitMask == nodeTypeTwo.rawValue
let isBnodeTypeOne = contact.nodeB.physicsBody!.categoryBitMask == nodeTypeOne.rawValue
let isBnodeTypeTwo = contact.nodeB.physicsBody!.categoryBitMask == nodeTypeTwo.rawValue
if (isAnodeTypeOne && isBnodeTypeTwo) || (isAnodeTypeTwo && isBnodeTypeOne) {
return true
} else {
return false
}
}
那么如果
if isCollisionBetween(CC.TypeA, nodeTypeTwo: CC.TypeB, contact: contact) {
updateScoreLabel()
}
有人可以指出问题。当检测到相同的碰撞并且使用 println 语句输出分数时,分数更新不会暂停场景,所以我认为它特定于更改 SKLabelNode 的文本