1

私のゲームでは、シリアライゼーションを使用して、いくつかの配列と変数をディスク上のファイルに保存しています。すべてが良いです。

しかし、iOS ビルドを作成しようとした後、保存を拒否し、Xcode デバッガーは「ファイル名はまだサポートされていません」と言います。

これを修正するにはどうすればよいですか?

データを保存およびロードするコードは次のとおりです。

public void SaveState()
{
    BinaryFormatter bf = new BinaryFormatter();
    FileStream file = File.Create(Application.persistentDataPath + saveFileName);
    bf.Serialize(file, this);
    file.Close();
}

public static GlobalState LoadState()
{
    if (File.Exists(Application.persistentDataPath + saveFileName)) {
        BinaryFormatter bf = new BinaryFormatter();
        FileStream file = File.Open(Application.persistentDataPath + saveFileName, FileMode.Open);
        GlobalState result = (GlobalState)bf.Deserialize(file);
        file.Close();
        return result;
    }
    return null;
}

そして、ここに私のシリアル化関数があります:

// Deserialization function
public GlobalState(SerializationInfo info, StreamingContext ctxt)
{
    lastBossKilled = (int)info.GetValue("lastBoss", typeof(int));
    currentlySelectedSpells = (SpellType[])info.GetValue("spells", typeof(SpellType[]));
    learnedTalents = (int[])info.GetValue("talents", typeof(int[]));
    talentPointsAvailable = (int)info.GetValue("talentPoints", typeof(int));
}

//Serialization function.
public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
{
    info.AddValue("lastBoss", lastBossKilled);
    info.AddValue("spells", currentlySelectedSpells);
    info.AddValue("talents", learnedTalents);
    info.AddValue("talentPoints", talentPointsAvailable);
}

ユーザーデフォルトに移行することを考えましたが、そこに配列を保存できません。

私のファイル名は次のように構成されています:

private static string saveFileName = "045.bin";
new StreamWriter(Application.persistentDataPath + saveFileName)
4

1 に答える 1