Мой модуль отлично работает в редакторе Unity, все сохраняет и загружает. Но в iOS происходит сбой с исключением аргумента вне диапазона. Мои методы сохранения и загрузки:
Код: Выделить всё
public void Load(){
GDEAchievementsData achievements;
if (!GDEDataManager.DataDictionary.TryGetCustom(GDEItemKeys.Achievements_Achievements, out achievements)){
Debug.LogError("Error reading save data!");
}
LoadAchievementsInDictionary(achievements);
Debug.Log("Achievement loaded data");
}
public void Save(){
GDEAchievementsData achievements;
if (!GDEDataManager.DataDictionary.TryGetCustom(GDEItemKeys.Achievements_Achievements, out achievements)){
Debug.LogError("Error reading save data!");
}
SaveDictionaryInAchievements(AchievementScript.achievements, achievements);
achievements.Set_Achievements();
Debug.Log("ACHIEVEMENTS saved data");
}
void LoadAchievementsInDictionary(GDEAchievementsData gdeData){
Debug.Log("Achievements: "+gdeData.Achievements);
if(achievements==null){
achievements = new AchievementList();
}
foreach(List achievement in gdeData.Achievements){
if(achievements.list.ContainsKey(achievement[0]))
{
achievements.list[achievement[0]] = (achievement[1]=="true")||(achievement[1]=="True");
}else{
achievements.list.Add(achievement[0], achievement[1]=="true"||achievement[1]=="True");
}
}
}
void SaveDictionaryInAchievements(AchievementList list, GDEAchievementsData gdeData){
for(int i = 0; i < gdeData.Achievements.Count; i++){
List item = gdeData.Achievements[i];
string achievementName = item[0];
item[1] = list.list[achievementName].ToString();
}
}
ArgumentOutOfRangeException: Аргумент выходит за пределы диапазона.
Имя параметра: index
в System.Collections.Generic.List`1[System.String].get_Item (индекс Int32) [0x00000] в :0
в AchievementScript.SaveDictionaryInAchievements (список .AchievementList, GameDataEditor.GDEAchievementsData gdeData) [0x00000] в :0
в AchievementScript.Save() [0x00000] в :0
в AchievementScript.OnApplicationFocus (Boolean focusStatus) [0x00000] в:0
в AchievementScript.OnApplicationPause (Boolean PauseState) [0x00000] в:0
И для загрузки:
ArgumentOutOfRangeException: аргумент выходит за пределы диапазона.
Имя параметра: index
в System.Collections.Generic.List`1 [System.String].get_Item (индекс Int32) [0x00000] в:0
в AchievementScript.LoadAchievementsInDictionary (GameDataEditor.GDEAchievementsData gdeData) [0x00000] в:0
в AchievementScript.Load() [0x00000] в :0
в AchievementScript.OnApplicationFocus (Boolean focusStatus) [0x00000] в :0
Задавая тот же вопрос для GDE, но если кто-нибудь знает, почему это происходит, было бы здорово получить некоторую информацию.
Подробнее здесь: https://stackoverflow.com/questions/302 ... dictionary
Мобильная версия