在C#中保存ENUM并加载它

时间:2017-09-28 06:52:12

标签: c# unity3d enums

我试图在代码中保存一些枚举。保存和转换为字符串进展顺利。但随着装载有一些问题。我的意思是。我只是无法加载它)。我在团结中做所有这一切。我想将enum转换为字符串并将其转换回来。转换为字符串工作正常。但是我不知道反向收敛会发生什么。谢谢。

using UnityEngine;
using System.Collections;
using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;

public class GameControl : MonoBehaviour {
public static GameControl control;
public float health;
public float experience;
public string stateString;
public enum State { start_0, start_1, start_3, start_4 };
public State myState;

void Awake () {
    if(control == null)
    {
        DontDestroyOnLoad(gameObject);
        control = this;
    }
    else if(control != this)
    {
        Destroy(gameObject);
    }
}
public void Save()
{   
    stateString = myState.ToString();  //Converts ENUM to STRING
    BinaryFormatter bf = new BinaryFormatter();
    FileStream file = File.Create(Application.persistentDataPath + 
    "/playerInfo.dat");

    PlayerData data = new PlayerData();
    data.health = health;
    data.experience = experience;
    data.stateString = stateString;

    bf.Serialize(file, data);
    file.Close();   

}
public void Load()
{
    if(File.Exists(Application.persistentDataPath + "/playerInfo.dat"))
    {   
        State loadedState = (State) Enum.Parse(typeof(State), stateString);
        BinaryFormatter bf = new BinaryFormatter();
        FileStream file = File.Open(Application.persistentDataPath + 
    "/playerInfo.dat", FileMode.Open);
        PlayerData data = (PlayerData)bf.Deserialize(file);
        file.Close();

        health = data.health;
        experience = data.experience;
        stateString = data.stateString;
      }
  }

 }
 [Serializable]
 class PlayerData
 {
 public float health;
 public float experience;
 public string stateString;
 public enum State { start_0, start_1, start_3, start_4 };
 public State myState;
 }

0 个答案:

没有答案