Hi,
I have written a code where I parse xml file to List of items and create a serializable asset with that list. My problem is that when I enter a playmode my asset becomes empty.
Do you have any ideas in why is that happening?
Thank you in advance.
Code:
[Serializable]
public class Day
{
public int Id { get; set; }
public string Time { get; set; }
public string Weather { get; set; }
public List<GroupWave> GroupWaves { get; set; }
}
[Serializable]
public class GroupWave
{
public List<Wave> Waves { get; set; }
}
[Serializable]
public class Wave
{
public int At { get; set; }
public int GenerateTime { get; set; }
public List<Enemy> Enemies { get; set; }
}
[Serializable]
public class Enemy
{
public string Id { get; set; }
public string EnemyType { get; set; }
public int Count { get; set; }
public string Route { get; set; }
}
And creating asset:
public class ParseConfig : EditorWindow
{
//private const string xmlPath = "Assets/StreamingAssets/game_config.xml";
private const string assetPath = "Assets/Resources/game_config.asset";
[MenuItem("Zombie Sniper/Parse config")]
public static void ParseAndSerializeData()
{
var days = DaysEntitiesParser.Parse(Application.streamingAssetsPath + "/game_config.xml");
ScriptableObjectData data = ScriptableObject.CreateInstance<ScriptableObjectData>();
data.SetData(days.ToArray());
EditorUtility.SetDirty(data);
AssetDatabase.DeleteAsset(assetPath);
AssetDatabase.CreateAsset(data, assetPath);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
}
}
[System.Serializable]
public class Day
{
[SerializeField]
private int id;
[SerializeField]
private string time;
[SerializeField]
private string weather;
[SerializeField]
private GroupWave[] groupWaves;
public int Id
{
get { return id; }
set { id = value; }
}
public string Time
{
get { return time; }
set { time = value; }
}
public string Weather
{
get { return weather; }
set { weather = value; }
}
public GroupWave[] GroupWaves
{
get { return groupWaves; }
set { groupWaves = value; }
}
}
[System.Serializable]
public class GroupWave
{
[SerializeField]
private Wave[] waves;
public Wave[] Waves
{
get { return waves; }
set { waves = value; }
}
}
[System.Serializable]
public class Wave
{
[SerializeField]
private int at;
[SerializeField]
private int generateTime;
[SerializeField]
private Enemy[] enemies;
public int At
{
get { return at; }
set { at = value; }
}
public int GenerateTime
{
get { return generateTime; }
set { generateTime = value; }
}
public Enemy[] Enemies
{
get { return enemies; }
set { enemies = value; }
}
}
[System.Serializable]
public class Enemy
{
[SerializeField]
private string id;
[SerializeField]
private string enemyType;
[SerializeField]
private int count;
[SerializeField]
private string route;
public string Id
{
get { return id; }
set { id = value; }
}
public string EnemyType
{
get { return enemyType; }
set { enemyType = value; }
}
public int Count
{
get { return count; }
set { count = value; }
}
public string Route
{
get { return route; }
set { route = value; }
}
}