나는 10 레벨의 게임을 가지고 있으며 각 레벨에는 사용자가 수집 할 수있는 궤도가 있습니다. 사용자가 orb을 처음 수집 할 때 레이블에 +1을 추가하고 NSUserDefaults를 사용하여 저장해야합니다. 그건 잘 작동하지만 같은 레벨을 재생할 때 나는 orb를 다시 수집하면 레이블에 다른 +1을 추가 할 수 없습니다. 각 레벨에 각 오브마다 +1을 추가하면됩니다. 따라서 사용자가 모든 orbs를 수집하면 레이블에 저장된 총 10 개의 orbs가됩니다. 내가 도대체 뭘 잘못하고있는 겁니까? 더 타고난 중복 방지가 없기 때문에 UserDefaults
에서 Int
값을 추적Swift에서 레이블에 한 번만 정수를 저장할 수 있도록 플래그를 설정하려면 어떻게합니까?
class LevelOne: SKScene, SKPhysicsContactDelegate {
var didCollectOrb = true
override func didMove(to view: SKView) {
if didCollectOrb == true {
UserDefaults().set(UserDefaults().integer(forKey: "saveOrbs")+0, forKey:"saveOrbs")
print("will add nothing to label")
}
}
func didBegin(_ contact:SKPhysicsContact){
var firstBody: SKPhysicsBody
var secondBody: SKPhysicsBody
// 2. Assign the two physics bodies so that the one with the lower category is always stored in firstBody
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
firstBody = contact.bodyA
secondBody = contact.bodyB
} else {
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if firstBody.categoryBitMask == HeroCategory && secondBody.categoryBitMask == OrbCategory {
//saves orbs
if didCollectOrb {
UserDefaults().set(UserDefaults().integer(forKey: "saveOrbs")+1, forKey:"saveOrbs")
print("will add +1 to label")
}
}
}
}
레이블의 '텍스트'값은 어디에 설정하고 있습니까? –
orbLabel.text = UserDefaults(). 정수 (forKey : "saveOrbs") 설명 – coding22
의견을 잘못 읽습니다. 내 GameScene.swift 파일의 레이블이 didMoveToView에 있습니다. – coding22