2017-02-26 4 views
0

私は設定シングルトンクラスを使用したいゲームを作っています。私はインターネットからこのコードサンプルを入手しました。しかし、このクラスの読み込みに問題があります。保存後にこれらのプロパティを読み込む方法を理解できません。シングルトンクラスのプロパティをロードするにはどうすればよいですか?

class Settings: NSObject, NSCoding { 

static let DocumentDirectory = FileManager().urls(for: .documentDirectory, in: .userDomainMask).first! 
static let ArchiveURL = DocumentDirectory.appendingPathComponent("settings") 

static let shared = Settings() 

var level: Int = 1 
var moves: Int = 0 
var music: Bool = true 

override init() { 
    super.init() 
} 

required init?(coder aDecoder: NSCoder) { 
    level = aDecoder.decodeInteger(forKey: SNames.CurrentLevelSName) 
    music = aDecoder.decodeBool(forKey: SNames.MusicSName) 
} 

func encode(with aCoder: NSCoder) { 
    aCoder.encode(level, forKey: SNames.CurrentLevelSName) 
    aCoder.encode(music, forKey: SNames.MusicSName) 
} 

func loadGame() -> Settings? { 
    return NSKeyedUnarchiver.unarchiveObject(withFile: Settings.ArchiveURL.path) as? Settings 
} 

func save() { 
    let isSuccessfulSave = NSKeyedArchiver.archiveRootObject(self, toFile: Settings.ArchiveURL.path) 
    if !isSuccessfulSave { 
     print("Failed to save Settings...") 
    } 
} 

}

答えて

1

あなたは、設定を取得するために許可すればしなければならないと、あなたはレベル、移動やその他のプロパティにアクセスすることができます。いくつかのコードをheres。

if let settings = Settings.shared.loadGame() { 
    print(settings.level) 
} 

これで設定が読み込まれ、レベルが印刷されます。

+0

ViewControllerでゲームを起動するときに、このシングルトンクラスにプロパティをロードするだけです。そして、GameSceneから共有インスタンスからレベルにアクセスしたいのです。それが私の問題です。 –

+0

GameSceneで自分のコードを使ってみてください。このコードはクラスをロードし、レベルを与えます。 –

+0

ありがとう、私はこれを試してみる:) –

関連する問題