私は、プレイヤーが失ったときにタイマーを追加しています。現在は3時間です。時間がなくなると、プレイヤーは自分のゲームの15コインを無料で得ることができます。スウィフトゲームでフォアグラウンドとバックグラウンドの2〜3時間タイマーを作成するにはどうすればよいですか?
今のところ、NSTimerを使用しています。問題は、ゲームをバックグラウンドモードにするたびに、ドキュメンテーションを読むときにタイマーが停止することです。したがって、タイミングはゲームのプレイ時にのみ実行され、必ずしもそうではありません。
どうすればこの問題を解決できますか?そのタイマーが終了したときに通知をユーザーに送信して、ユーザーが自分のゲームに入り、無料でコインを掴むこともできます。ここで
は私がこれまで持っているものです。
var coinCountdown = 10800 // 3hr = 10800
var coinCurrentTimer = NSTimer.init()
var coinCountdownLabel = SKLabelNode()
その後、私は私のSKSceneの初期化中:
self.coinCurrentTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(GameScene.updateCoinCountdown), userInfo: nil, repeats: true)
そして、これはupdateCoinCountdown方法である:
func updateCoinCountdown() {
if(self.coinCountdown > 0){
var hour = String(self.coinCountdown/3600)
var minutes = String((self.coinCountdown % 3600)/60)
var seconds = String((self.coinCountdown % 3600) % 60)
if Int(hour) < 10 {
hour = "0" + hour
}
if Int(minutes) < 10 {
minutes = "0" + minutes
}
if Int(seconds) < 10 {
seconds = "0" + seconds
}
self.coinCountdownLabel.text = hour + ":" + minutes + ":" + seconds
self.coinCountdown = self.coinCountdown - 1
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.valueForKey("coinCountdown") != nil {
defaults.setValue(self.coinCountdown, forKey: "coinCountdown")
}
}else{
print("Done! Send notification and show get coin button")
}
}
どれでもヒントは非常に高く評価されます。
この機能は、Timer..Evenを使用して実装することはできません。キャンディクラッシュは、現在の時間に時間間隔を追加し、デバイス時間がtimeに達したかどうかを確認する機能を実装しました。 :) –
ああ:(お返事いただきありがとうございます) – msqar