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...")
}
}
}
ViewControllerでゲームを起動するときに、このシングルトンクラスにプロパティをロードするだけです。そして、GameSceneから共有インスタンスからレベルにアクセスしたいのです。それが私の問題です。 –
GameSceneで自分のコードを使ってみてください。このコードはクラスをロードし、レベルを与えます。 –
ありがとう、私はこれを試してみる:) –