2016-04-08 39 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

谢谢!如果我的回复有帮助,请接受这个答案;) –