我正在制作游戏,目前我正在制作评分系统。但是,我面临着一个愚蠢的问题。我的得分var总是在调用时用一元运算符(+ =)增加1,它有时会将值更新2点而不是1点,并且它会随机进行。我编写了一个协议,我符合我的GameScene类,并且我总是在sprite之间有联系时调用该方法。
func wasCollected(item: gold) {
score += item.pointValue
}
这个方法可以被调用两次而不是一次吗?因为在控制台中,当我尝试在随机时刻收集单个点时,我看到数字按顺序更新2。我还试图通过仅使用score ++而不是访问item.pointValue属性来解决此问题,但问题仍然存在。
这是我在自定义类中设置text属性时调用的方法,根据我的断点,只需单次执行该方法即可获得两次字符。我做错了什么?基本上我正在使用这种方法,我有一个位图图形,我用它作为我的数字的字体。
for var i:NSInteger = 0; i < text.length; i++
{
//Get character in text for current position in loop
//Getting the scalar encoded value
let scalarEncoded:unichar = text.characterAtIndex(i)
//Decoding the scalar
let scalarDecoded = Character(UnicodeScalar(scalarEncoded))
//Build texture name from character and font name
let textureName:NSString = "\(fontName)\(scalarDecoded)"
print(textureName)
if i < children.count
{
//Reuse existing node
letter = children[i] as! SKSpriteNode
letter.texture = graphicsAtlas.textureNamed(textureName as String)
letter.size = letter.texture!.size()
}
else
{
//Create a new node if not exist
letter = SKSpriteNode(texture: graphicsAtlas.textureNamed(textureName as String))
letter.anchorPoint = CGPointZero
self.addChild(letter)
}
letter.position = pos
pos.x += letter.size.width + letterSpacing
totalSize.width = letter.size.width + letterSpacing
if totalSize.height < letter.size.height
{
totalSize.height = letter.size.height
}
}