다만 현재 기능의 경우 이슈 사항이 좀 있으며, 문제 사항은 다음과 같다.
캐릭터 기본 데이터는 로비 씬 진입 시 바로 생성이 되지만, 캐릭터 업그레이드 데이터 초기화는 로비 씬 진입 후 진행되지 않음. 이상하게 Unity 에디터 상에서 플레이를 종료할 시에 해당 초기화 과정이 실행되는 것을 확인함
해당 문제가 에디터 상으로만 발생하는지, 아니면 빌드 후에도 발생하는 것인지 테스트가 필요하여 우선 해당 기능을 넣은 채로 빌드 테스트 진형을 요청드림
현재 발생하는 이슈에 대해서는 원인을 찾았지만 해결 방법을 찾지 못한 상태로, 빌드본 테스트의 진행이 필요하다.
using Cysharp.Threading.Tasks;
using Firebase.Database;
using UnityEngine;
public class CharDB
{
private DatabaseReference _characterReference;
private string _uid => FirebaseManager.Auth.CurrentUser.UserId;
public async UniTask InitializeCharacterUpgradeData()
{
_characterReference = FirebaseManager.DataReference
.Child("UserData").Child(_uid).Child("CharacterData");
Debug.Log("업그레이드 데이터 Initial 시작");
await UniTask.Yield();
Debug.Log("쉬기");
var snapshot = await _characterReference.GetValueAsync();
Debug.Log("ddd");
if (!snapshot.Exists || snapshot.ChildrenCount == 0)
{
foreach (var charData in Manager.Data.UnitDataDic.Values)
{
if (charData.UpgradeData == null) continue;
charData.UpgradeData.CurrentUpgradeData = new CurrentUpgradeData
{
CurrentPieces = 0,
UpgradeLevel = 0
};
Debug.Log($"{charData.Name}");
await SaveCharacterUpgradeData(charData);
Debug.Log("업그레이드 데이터 저장 완료");
}
Debug.Log("최초 계정 → UpgradeData 초기화 완료");
}
else
{
Debug.Log("UpgradeData 이미 존재 → 초기화 생략");
}
}
...
여기서 이유는 알 수 없지만, var snapshot = await _characterReference.GetValueAsync(); 구간에서 정지하는 현상이 발생하고 있다.
다만 실행되는 것 자체만 놓고 보면 뭔가가 꼬인 건 아닌 것 같은데, 원인을 찾아봐야 할 것으로 보인다,