데일리 보상을 구현해 봤어요..
네트워크 날짜시간을 저장했다가..
다음날 접속시 접속 현시간과 비교하여..
날, 월, 년도를 순서대로 비교해서 다른면
다른 날로 인식해서..
금화, 보석을 추가 지급하는 방식이죠..
일단, 기존 불러오기 버튼 클릭시에 기능실행..
[System.Serializable]
public class SaveData // 클래스(class) 형태 직렬화
{
// 정상적인 세이브를 위해 숫자도 string형으로 선언
public string Name, Lvl, Exp, Jewel, Gold, Season;
public DateTime LoginDate;
}
먼저, 세이브파일에 매개변수에.
public class TitleManager : MonoBehaviour
{
private string[] filePath = new string[2]; // 세이브 파일들이 저장위치를 저장할 문자열
public SaveData MySaveData; // 세이브데이터를 저장할 변수 선언
}
DateTime 자료형 변수 선언..
OnClickLoad 버튼을 클릭하면
기존 세이브파일 있는지 확인을 하고..
기존 세이브파일이 있으면..
현재 네트워크 시간을 불러와서..
날, 월, 연도별로 각각 저장을 하고..
이전에 저장된 로그인기록 LoginDate 에서
날, 월, 연도별로 각각 저장하든지,
바로 비교하든지 해서..
날짜가 다르면 보상..
날짜가 같은데 월이 다르면 보상..
날짜, 월이 같은데.. 년도가 다르면 보상..
그리고
LoginDate = DateTime.UtcNow 대입하고
Save(); 저장하기..
public void OnClickLoadGame()
{
Load();
if (!File.Exists(filePath[0])) // MySaveDate.txt 세이브파일 존재여부 확인
{
Debug.Log("세이브 파일 없다. 새게임으로 새로 시작해라");
return; // 클래스 종료
}
else
{
Debug.Log("세이브 파일이 있다. 기존 파일로 시작할게");
DateTime CurrentDate = DateTime.UtcNow; // 현재 국제시간 불러오기
int CurrenYear = CurrentDate.Year; // 현재 년도
int CurrenMonth = CurrentDate.Month; // 현재 월
int CurrenDay = CurrentDate.Day; // 현재 날짜.
// *** 시험용으로 최근 접속 기록을 3월로 저장
MySaveData.LoginDate = new DateTime(2020, 9, 19, 12, 00, 12, 00);
// 저장된 DateTime 확인하기
Debug.Log("저장된 로그일자.. : " + MySaveData.LoginDate);
Debug.Log("저장된 년도수.. : " + MySaveData.LoginDate.Year);
Debug.Log("저장된 개월수.. : " + MySaveData.LoginDate.Month);
Debug.Log("저장된 날짜수.. : " + MySaveData.LoginDate.Day);
// ******************************
// ***** 데일리 보상 구현하기...
if (CurrenDay != MySaveData.LoginDate.Day)
{
Debug.Log("날짜가 달라서..");
Debug.Log("현재 날수는.. : " + CurrenDay);
int MyJewel = int.Parse(MySaveData.Jewel);
MyJewel = MyJewel + 100;
MySaveData.Jewel = MyJewel.ToString();
int MyGold = int.Parse(MySaveData.Gold);
MyGold = MyGold + 10000;
MySaveData.Gold = MyGold.ToString();
Save();
} else if (CurrenMonth != MySaveData.LoginDate.Month)
{
Debug.Log("개월수가 달라서..");
Debug.Log(CurrenMonth);
Debug.Log(MySaveData.LoginDate.Month);
int MyJewel = int.Parse(MySaveData.Jewel);
MyJewel = MyJewel + 100;
MySaveData.Jewel = MyJewel.ToString();
int MyGold = int.Parse(MySaveData.Gold);
MyGold = MyGold + 10000;
MySaveData.Gold = MyGold.ToString();
Save();
}
else if (CurrenDay == MySaveData.LoginDate.Day && CurrenMonth == MySaveData.LoginDate.Month && CurrenYear != MySaveData.LoginDate.Year)
{
Debug.Log("연도가 달라서..333");
int MyJewel = int.Parse(MySaveData.Jewel);
MyJewel = MyJewel + 100;
MySaveData.Jewel = MyJewel.ToString();
int MyGold = int.Parse(MySaveData.Gold);
MyGold = MyGold + 10000;
MySaveData.Gold = MyGold.ToString();
Save();
}
SceneManager.LoadScene("MenuScene"); // 메뉴씬으로 이동
}
이렇게 하면 되더라고요..
오늘은 여기까지..
'ぺ Let's do it ぺ > ⒈유니티(Unity3d)' 카테고리의 다른 글
[별아재군/unity2d] "삼국지 영웅전" 영웅관리 화면 첫번째 보유한 캐릭터 나타내기 (0) | 2021.09.26 |
---|---|
[별아재군/unity3d] "삼국지 영웅전" DateTime를 이용해서 분기별 시즌제도 적용하기.. (0) | 2021.09.24 |
[별아재군/unity3d] "삼국지 영웅전" DateTime를 이용해서 유효기간 넣기.. (0) | 2021.09.16 |
[별아재군/unity3d] "삼국지 영웅전" 중간 점검 결과.. (0) | 2021.09.16 |
[별아재군/unity3d] "삼국지 영웅전" 덱설정 화면 두번째 덱설정 추가 또는 삭제하기.. (0) | 2021.09.15 |
댓글