【SpriteKit】ステージクリア情報を保存する方法

ゲーム開発でポイントになるのがデータのセーブをどうするか。

例えばステージをクリアした時に、その情報が保存されなければクリアしたことにならず次のステージに進めません。

Swiftにはアプリ内にデータを保存するための仕組みUserDefaultがあるのでこれを使ってデータを保存してみました。

class SaveData {
    // key:stage1,2,3
    // value:true=クリア済み
    func save(key:String,value:Bool){
        UserDefaults.standard.set(value, forKey: key)
    }
    
    func get(key:String) -> Bool{
        return UserDefaults.standard.bool(forKey: key)
    }
}

保存する機能と取得する機能を用意しました。

UserDefaultでは、キーとバリューをセットで保存します。

キーはステージ名、バリューはクリアしたかどうかを表すフラグをセットすることで、そのステージがクリアしたかどうかが分かります。

ステージのボスが死んだ時にステージをクリアの状態にするには以下のようにします。

SaveData().save(key: "stage2", value: true)

ステージのクリア情報を確認するには以下のようにします。

        if SaveData().get(key: "stage1"){
            //stage1をクリアしていた。
        }

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog