-
[Unity3d] 일정 시간 이후 보상 구현하기Development/Unity3d 2020. 4. 18. 03:04반응형
핵심1. class TimeManager
IEnumerator getServerTime() : UnityWebRequest.Head(url)을 통해 서버로부터 시간을 가져온다.
getCurrentTime() : 코루틴을 통해 얻은 현재시간을 PlayerPrefs로 저장한다.보상시간을 저장할 때에는 순차적으로 콤마(,) 등을 기준으로 저장한다. 보상시간은 DateTime.AddMinutes() 등으로 하면 된다.
ex) 2020-04-16 AM03:00, 2020-04-16 AM04:00, 2020-04-16 AM05:00, 2020-04-16 AM06:00
시간을 하나씩 가져오고 싶으면 string[] data = string.Split(',')로 가져올 수 있다.보상이 지급된 이후에는 data[1]부터 data.length까지 가져온 뒤 다시 덮어씌워 저장하면 된다. 이 때 PlayerPrefs에 보상하면댐
핵심2. class LifeManager
IEnumerator OnReward() : TimeManager클래스의 getServerTime()코루틴을 호출 한 뒤, TimeManager클래스의 getCurrent() 호출해야 정상적으로 현서버시간을 가져올 수 있다.(핵심!!)
yield return StartCoroutine(TimeManager.instance.getServerTime());
getNow = TimeManager.instance.getCurrentTime();
그리고 가져온 시간을 통해 예상 보상시간과 현재시간을 비교해 현재시간이 보상시간을 넘겼을 경우 보상을 지급한다.
if(getNow.CompareTo(DateTime.Parse(rewardTime[i])) >= 0)
countTime(DateTime now) : 서버로부터 받은 현재시간을 변수에 저장한 뒤 Update()에서 AddSeconds(Time.unscaledDeltaTime);을 해준다. 그러면 1초 단위로 서버시간이 흘러간다. 이를 활용해 다음 보상까지 남은 시간을 화면에 뿌려줄 수 있다.
끄읏반응형'Development > Unity3d' 카테고리의 다른 글
[Unity3d] 1부터 199 사이 1이 몇 번들어가는가? (C# ) (0) 2022.04.20 [Unity3d] 안드로이드 실행 오류원인 및 해결! (0) 2021.11.22 [Unity3d] 모바일 게임개발일지 - 메모 (0) 2020.07.23 [Unity3d] 코루틴 WaitForSeconds 중단하는법 (1) 2020.04.26 [Unity3d] 코루틴 내에서 Time.deltaTime 활용법 (0) 2020.04.20 [Unity3d]서버로부터 현재시간 가져오기 (0) 2020.04.16 [Unity3d]경량 렌더 파이프라인(Lightweight RP) (0) 2020.03.04 [Unity3d]PC로 빌드했는데 exe 파일이 추출이 안될때 100% 해결방법 (1) 2019.11.03 [Unity3D]유니티 간편하게 로우폴리 맵 만들기(Low-Poly Map) (6) 2018.11.30 [유니티&PHP]현재시간 가져오기 (0) 2017.09.03