2016-04-08 41 views
0

我有一個瑣事遊戲/應用程序有4個部分。我試圖在4個部分保持分數,同時也更新總分。我跟着這個問題The best way to implement lives and score count in Sprite Kit (static, IoC, other?)和遵循的鏈接寫在OBJ C.在試圖教程代碼的OBJÇ轉換爲斯威夫特教程 - 我想出了這一點 -如何正確初始化全局變量爲一個遊戲在迅速

class Scoring: NSObject { 
    var tfscore: Int = 0 
    var mcscore: Int = 0 
    var mapsscore: Int = 0 
    var photoscore: Int = 0 
    var overallscore: Int = 0 

    class func sharedGameData() -> Self { 
     return sharedGameData() 
    } 
} 

我可以調用得分項目,如本 -

@IBAction func answerButtonHandler(sender: UIButton) { 
    if sender.titleLabel!.text == correctAnswer { 
     ayuh() 
     truefalsescore += 1 
     Scoring.sharedGameData().tfscore = truefalsescore 
     Scoring.sharedGameData().overallscore = truefalsescore 
    } 
} 

然而,當我建立和運行,我上回sharedGameData()線錯誤/崩潰只要分數的變化。

我是否正確初始化? 這是從各個部分獲取分數並能夠添加它們,訪問它們的最佳方法嗎? 謝謝, 埃裏克

回答

0

可以使用Constants.swift文件,你把你的所有共享變量:

import Foundation 

var tfscore: Int = 0 
var mcscore: Int = 0 
var mapsscore: Int = 0 
var photoscore: Int = 0 
var overallscore: Int = 0 

然後,您可以訪問那些無論你在你的代碼需要。

希望它可以幫助

2

就會陷入無限遞歸,因爲你本身就打電話sharedGameData()

請嘗試以下方法:

class Scoring { 

    static let sharedGameData = Scoring() 

    var tfscore: Int = 0 
    var mcscore: Int = 0 
    var mapsscore: Int = 0 
    var photoscore: Int = 0 
    var overallscore: Int = 0 

    init() { 

    } 
} 

現在,你可以Scoring.sharedGameData.tfscore += 1或在你的代碼的任何地方。

+1

謝謝!如果我的回覆有幫助,請接受這個答案;) –