Hello, you are busy, but I really need help, so I am leaving a question.
During the process of loading user data, it seems that some data is not loading.
This error did not occur in all users, but occurred in some users. I have data in my player data (title) but I think it is not loading and I am looking for a way to fix this error.
During the saving process, an error called DataUpdateRateExceeded occurs. Does this have anything to do with this? Or maybe there's a problem with my loading code and I'd like to find an answer.
Because loading does not specify a separate path, all of the user's title data is loaded and the data is parsed based on the Dictionary Key value.
Below I have attached the load code, load failure log and a picture of "GetUserData OperationCanceled" from the dashboard.
If you have any further clues, please let me know. We desperately need help.
My English is not good so I'm sorry I used Google Translator.
/*플레이어 모든 데이터 로드 코루틴*/
private IEnumerator LoadAllData_Coroutine()
{
isDataLoad = false;
var request = new GetUserDataRequest() { PlayFabId = PlayFabManager.instance.playfab_id, Keys = null };
Dictionary<string, UserDataRecord> data_dict = new Dictionary<string, UserDataRecord>();
//네트워크 연결 확인
yield return new WaitUntil(() => (Application.internetReachability == NetworkReachability.NotReachable) == false);
PlayFabClientAPI.GetUserData(request,
result =>
{
if (result.Data == null)
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData_Coroutine Fail - Not Have Data");
Debug.Log("SaveLoadManager - LoadAllData_Coroutine Fail - Not Have Data");
}
else
{
data_dict = result.Data;
Debug.Log("SaveLoadManager - LoadAllData_Coroutine : Data Load Success");
}
isDataLoad = true;
},
error =>
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData_Coroutine Error - " + error.GenerateErrorReport());
Debug.Log("SaveLoadManager - LoadAllData_Coroutine Error - " + error.GenerateErrorReport());
isDataLoad = true;
});
yield return new WaitUntil(() => isDataLoad == true);
isDataLoad = false;
LoadReceiptData();
//데이터 로드 확인
yield return new WaitUntil(() => isDataLoad == true);
if (tutorialData.isTutorialFinish)
{
//플레이어 데이터 로드
if (data_dict.ContainsKey(PLAYER_DATA_KEY))
{
PlayerManager.instance.player.playerData = JsonMapper.ToObject<PlayerData>(data_dict[PLAYER_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + PLAYER_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + PLAYER_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + PLAYER_DATA_KEY + " Fail : Not Have Key or Data");
}
//길드 정보 데이터 로드
if (data_dict.ContainsKey(GUILD_DATA_KEY))
{
PlayerManager.instance.player.guild_info = JsonMapper.ToObject<GuildInfo>(data_dict[GUILD_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + GUILD_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + GUILD_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + GUILD_DATA_KEY + " Fail : Not Have Key or Data");
}
//의뢰 클리어 데이터 로드
if (data_dict.ContainsKey(QUEST_CLEAR_DATA_KEY))
{
PlayerManager.instance.player.questClear_Data = JsonMapper.ToObject<QuestClearData>(data_dict[QUEST_CLEAR_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + QUEST_CLEAR_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + QUEST_CLEAR_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + QUEST_CLEAR_DATA_KEY + " Fail : Not Have Key or Data");
}
//에피소드 데이터 로드
if (data_dict.ContainsKey(EVENT_DATA_KEY))
{
PlayerManager.instance.player.event_Data = JsonMapper.ToObject<EventData>(data_dict[EVENT_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + EVENT_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + EVENT_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + EVENT_DATA_KEY + " Fail : Not Have Key or Data");
}
//해금 데이터 로드
if (data_dict.ContainsKey(UNLOCK_INFO_DATA_KEY))
{
PlayerManager.instance.player.unlock_info = JsonMapper.ToObject<UnlockInfo>(data_dict[UNLOCK_INFO_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + UNLOCK_INFO_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + UNLOCK_INFO_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + UNLOCK_INFO_DATA_KEY + " Fail : Not Have Key or Data");
}
//미션 데이터 로드
if (data_dict.ContainsKey(MISSION_DATA_KEY))
{
PlayerManager.instance.player.missionData = JsonMapper.ToObject<MissionData>(data_dict[MISSION_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + MISSION_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + MISSION_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + MISSION_DATA_KEY + " Fail : Not Have Key or Data");
}
//가구 인벤토리 데이터 로드
if (data_dict.ContainsKey(FURNITURE_DATA_KEY))
{
PlayerManager.instance.player.inven.furni_inven.save_data = JsonMapper.ToObject<FurnitureSaveData>(data_dict[FURNITURE_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + FURNITURE_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + FURNITURE_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + FURNITURE_DATA_KEY + " Fail : Not Have Key or Data");
}
//의뢰 데이터 로드
if (data_dict.ContainsKey(QUEST_DATA_KEY))
{
PlayerManager.instance.player.inven.quest_List = JsonMapper.ToObject<List<Quest>>(data_dict[QUEST_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + QUEST_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + QUEST_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + QUEST_DATA_KEY + " Fail : Not Have Key or Data");
}
//용병 인벤토리 데이터 로드
if (data_dict.ContainsKey(BRAVE_DATA_KEY))
{
PlayerManager.instance.player.inven.brave_inven.saveDataList = JsonMapper.ToObject<List<CharacterSaveData>>(data_dict[BRAVE_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + BRAVE_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + BRAVE_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + BRAVE_DATA_KEY + " Fail : Not Have Key or Data");
}
//음식 데이터 로드
if (data_dict.ContainsKey(FOOD_DATA_KEY))
{
PlayerManager.instance.player.inven.food_inven.foodList = JsonMapper.ToObject<List<FoodData>>(data_dict[FOOD_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + FOOD_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + FOOD_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + FOOD_DATA_KEY + " Fail : Not Have Key or Data");
}
//아이템 데이터 로드
if (data_dict.ContainsKey(ITEM_DATA_KEY))
{
PlayerManager.instance.player.inven.item_List = JsonMapper.ToObject<List<ItemData>>(data_dict[ITEM_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + ITEM_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + ITEM_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + ITEM_DATA_KEY + " Fail : Not Have Key or Data");
}
//선물 데이터 로드
if (data_dict.ContainsKey(PRESENT_DATA_KEY))
{
PlayerManager.instance.player.inven.present_inven = JsonMapper.ToObject<PresentInventory>(data_dict[PRESENT_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + PRESENT_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + PRESENT_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + PRESENT_DATA_KEY + " Fail : Not Have Key or Data");
}
//무기 데이터 로드
if (data_dict.ContainsKey(WEAPON_DATA_KEY))
{
PlayerManager.instance.player.inven.gear_inven.weaponSaveDataList = JsonMapper.ToObject<List<WeaponSaveData>>(data_dict[WEAPON_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + WEAPON_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + WEAPON_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + WEAPON_DATA_KEY + " Fail : Not Have Key or Data");
}
//아머 데이터 로드
if (data_dict.ContainsKey(ARMOR_DATA_KEY))
{
PlayerManager.instance.player.inven.gear_inven.armorSaveDataList = JsonMapper.ToObject<List<ArmorSaveData>>(data_dict[ARMOR_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + ARMOR_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + ARMOR_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + ARMOR_DATA_KEY + " Fail : Not Have Key or Data");
}
//헬멧 데이터 로드
if (data_dict.ContainsKey(HELMET_DATA_KEY))
{
PlayerManager.instance.player.inven.gear_inven.helmetSaveDataList = JsonMapper.ToObject<List<ArmorSaveData>>(data_dict[HELMET_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + HELMET_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + HELMET_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + HELMET_DATA_KEY + " Fail : Not Have Key or Data");
}
//신발 데이터 로드
if (data_dict.ContainsKey(SHOES_DATA_KEY))
{
PlayerManager.instance.player.inven.gear_inven.shoesSaveDataList = JsonMapper.ToObject<List<ArmorSaveData>>(data_dict[SHOES_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + SHOES_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + SHOES_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + SHOES_DATA_KEY + " Fail : Not Have Key or Data");
}
if (data_dict.ContainsKey(BYPRODUCT_DATA_KEY))
{
PlayerManager.instance.player.inven.byproduct_List = JsonMapper.ToObject<List<ByproductData>>(data_dict[BYPRODUCT_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + BYPRODUCT_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + BYPRODUCT_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + BYPRODUCT_DATA_KEY + " Fail : Not Have Key or Data");
}
if (data_dict.ContainsKey(HOUSE_FURNITURE_DATA_KEY))
{
PlayerManager.instance.player.inven.house_furni_List = JsonMapper.ToObject<List<HouseFurniData>>(data_dict[HOUSE_FURNITURE_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + HOUSE_FURNITURE_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + HOUSE_FURNITURE_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + HOUSE_FURNITURE_DATA_KEY + " Fail : Not Have Key or Data");
}
if (data_dict.ContainsKey(ACHIVEMENT_COUNT_DATA_KEY))
{
PlayerManager.instance.player.achivmentCountData = JsonMapper.ToObject<AchivementCountData>(data_dict[ACHIVEMENT_COUNT_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + ACHIVEMENT_COUNT_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + ACHIVEMENT_COUNT_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + ACHIVEMENT_COUNT_DATA_KEY + " Fail : Not Have Key or Data");
}
if (data_dict.ContainsKey(ACHIVEMENT_DATA_KEY))
{
PlayerManager.instance.player.achivementData_List = JsonMapper.ToObject<List<AchivementData>>(data_dict[ACHIVEMENT_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + ACHIVEMENT_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + ACHIVEMENT_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + ACHIVEMENT_DATA_KEY + " Fail : Not Have Key or Data");
}
if (data_dict.ContainsKey(TITLE_DATA_KEY))
{
PlayerManager.instance.player.inven.title_List = JsonMapper.ToObject<List<TitleData>>(data_dict[TITLE_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + TITLE_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + TITLE_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + TITLE_DATA_KEY + " Fail : Not Have Key or Data");
}
if (data_dict.ContainsKey(COLLECTION_DATA_KEY))
{
PlayerManager.instance.player.inven.collection_inven = JsonMapper.ToObject<CollectionInventory>(data_dict[COLLECTION_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + COLLECTION_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + COLLECTION_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + COLLECTION_DATA_KEY + " Fail : Not Have Key or Data");
}
if (data_dict.ContainsKey(INVENTORYCOUNTINFO_DATA_KEY))
{
PlayerManager.instance.player.inven.invenCountInfo = JsonMapper.ToObject<InventoryCountInfo>(data_dict[INVENTORYCOUNTINFO_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + INVENTORYCOUNTINFO_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + INVENTORYCOUNTINFO_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + INVENTORYCOUNTINFO_DATA_KEY + " Fail : Not Have Key or Data");
}
if (data_dict.ContainsKey(ADMOB_DATA_KEY))
{
PlayerManager.instance.player.admobData = JsonMapper.ToObject<AdmobData>(data_dict[ADMOB_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + ADMOB_DATA_KEY + " Data Load Success");
}
else
{
LogManager.instance.SaveLogMessage("SaveLoadManager - LoadAllData " + ADMOB_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - LoadAllData " + ADMOB_DATA_KEY + " Fail : Not Have Key or Data");
}
//백업 데이터 생성
if (PlayerManager.instance.player.playerData.nickname != "")
{
if(data_dict.ContainsKey(BACKUP_DATA_KEY))
{
PlayerBackUpData backUpData = JsonMapper.ToObject<PlayerBackUpData>(data_dict[BACKUP_DATA_KEY].Value);
Debug.Log("SaveLoadManager - LoadAllData :" + BACKUP_DATA_KEY + " Data Load Success");
StartCoroutine("BackUpCheckCoroutine", backUpData);
yield return new WaitUntil(() => isBackUpFinish == true);
}
else
{
SaveBackUpData();
Debug.Log("SaveLoadManager - LoadAllData " + BACKUP_DATA_KEY + " Fail : Not Have Key or Data");
Debug.Log("SaveLoadManager - Create BackUp Data");
yield return new WaitUntil(() => PlayFabManager.instance.isSaved == true);
}
}
string logmessage = LogManager.instance.LoadLogMessage();
if(logmessage != "")
{
logmessage = logmessage + "/" + DateTime.Now.ToLocalTime().ToString();
Dictionary<string, string> data = new Dictionary<string, string>();
data.Add(ERROR_LOG_DATA_KEY, JsonMapper.ToJson(new { ErrorLog = logmessage }));
PlayFabManager.instance.UpdateData(data, UserDataPermission.Private);
yield return new WaitUntil(() => PlayFabManager.instance.isSaved == true);
LogManager.instance.DeleteLogMessage();
}
}
isLoading = false;
yield return null;
}