사용자가 선택할 수 있습니다. Swift In App 사용자가 게임을하는 동안 사용할 수있는 다른 유형의 차량을 구입할 때 사용할 수있는 "동전"을 구입할 수있는 옵션이 사용자가 다시 값을 매길 수 있습니다.
이
동전의 응용 프로그램에서 구매에 대한 코드입니다 :이 구매 완벽하게 작동하고 구입이 완료되면 coinScore이 증가func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch (transaction.transactionState) {
case .purchased:
SKPaymentQueue.default().finishTransaction(transaction)
print("Purchased")
let oldCoin = UserDefaults.standard.integer(forKey: "COINSCORE")
let newCoin = oldCoin + 500
UserDefaults.standard.set(newCoin, forKey: "COINSCORE")
UserDefaults.standard.synchronize()
coinLabel.removeFromParent()
createCoinScore()
// apply purchased here and store info in userDefaults
case .failed:
SKPaymentQueue.default().finishTransaction(transaction)
print("Failed")
default:
break
}
}
}
.
문제는 플레이어가 차량을 구매하기에 충분할 때 증가한 coinScore가 앱을 다시로드하거나 장면을 변경하고 돌아 오는 중로드 할 때까지 등록되지 않은 것입니다. coinScore 값에 도시되어 있지만, 구입 후
if(atPoint(location) == greyship2){
if coinScore > 20 {
let oldValue = UserDefaults.standard.integer(forKey: "COINSCORE")
let newValue = oldValue - 20
UserDefaults.standard.set(newValue, forKey: "COINSCORE")
UserDefaults.standard.set(true, forKey: "ship2")
UserDefaults.standard.synchronize()
coinLabel.removeFromParent()
coinImage1.removeFromParent()
coinLabel1.removeFromParent()
createCoinScore()
greyship2.setScale(0)
greyship2.removeFromParent()
let ship2Texture = SKTexture(imageNamed: "ship2.png")
ship2 = SKSpriteNode(texture: ship2Texture)
ship2.position = CGPoint(x: self.frame.midX - 150, y: self.frame.midY)
ship2.setScale(1)
self.addChild(ship2)
break //finish the touchesbegan call
}
이 플레이어가 차량을 구입할 수있는 코드가
var coinScore = UserDefaults().integer(forKey: "COINSCORE")
:
coinScore가되도록 변수로 추가 보기가 즉시 업데이트되어 사용자가 greyShip2를 클릭하여 앱을 새로 고침 할 때까지 구입할 수 없습니다.