티스토리 뷰
안녕하세요 이번에는 C#의 라이브러리 DateTIme클래스를 활용방법에 대해 알아보겠습니다.
모바일 게임을 개발할 때 흔히 시간에 따라 게임내의 재화를 지급하는 기능을 많이 씁니다.
예를 들면, 어느 특정 컨텐츠의 입장권이라던가 게임 플레이 자체의 입장권등을 일정시간마다 하나씩 지급하는 경우가 되겠습니다.
이 기능 구현을 위해 거쳐야할 순서로는
유저의 마지막 접속시간 가져오기 -> 현재시간 가져오기 -> 시간차이 계산 -> 시간차이를 지급시간으로 나누어 지급
첫번째로 유저의 마지막 접속시간을 가져와야합니다.
DB를 운영하신다면 유저테이블에 적당한 컬럼을, DB를 운영하지 않으신다면 앱 내부에 데이터를 추가하여 유저의 마지막 접속시간을 기록할 장소를 만듭니다.
그럼 접속시간을 기록하는 시기는 보통 접속을 종료할때, 재화를 지급하였을 때로 잡으시면 됩니다.
해당 시기에 현재시간을 구하여 기록합니다.
DateTime now;
now = DateTime.Now;
아주 간단한 코드로 현재 시간을 구할 수 있습니다.
그 다음 유저 마지막 접속시간과 현재시간의 차이를 구합니다.
TimeSpan timespan;
DateTime userIndate;
DateTime now;
now = DateTime.Now;
userIndate = Convert.ToDateTime(Userinfo.indate);
//가져온 유저의 문자열 접속시간을 DateTIme으로 변경합니다.
timespan = now - userIndate; //시간의 차이를 구합니다.
timespan에서 구한 시간을 초, 분 ,밀리초 등으로 원하는대로 가져와 쓸 수 있습니다.
여기서 유저정보의 indate값은 시간 형식을 준수한 문자열이어야합니다.
예를 들어 19900422 등의 년월일 날짜는 시간형식으로 인식되지 않습니다.
timespan.TotalSeconds//차이를 초로 나타냅니다.
timespan.TotalMinuites// 분으로 나타냅니다.
timespan.Miliseconds//밀리초로 나타냅니다.
이는 모두 더블형을 반환하기 때문에 사용의 편의를 위해서 int형으로 캐스팅한 후 사용하시면 좋습니다.
이제 시간의 차이를 활용하여 재화를 지급합니다.
UserInfo.tickets += (int)timespan.TotalSeconds / 600;
10을 기준으로 재화를 지급할경우 다음과 같이 계산하여 지급합니다.
여기서 만약 시간초가 648초여서 48초가 남기 때문에
유저의 접속시간을 10분만큼 당겨줘야 다음에 재화를 다시 지급할 때 정확한 양을 지급할 수 있습니다.
질문 있으시면 질문 남겨주시고 최대한 빠른 시일내에 답변드리겠습니다.
게시글과 다른 내용의 질문은 정확한 답변을 드리기 어려울 수 있습니다.
가장 빠른 시간내로 답변을 원하시면 오픈카톡방을 이용해주시길 바랍니다.
오픈카톡방 : 쉬엄쉬엄하자-티스토리
'유니티' 카테고리의 다른 글
유니티 - 블러 쉽게 구현하기 (1) | 2020.12.01 |
---|---|
유니티 - JSON 활용 n차원 배열 (0) | 2020.08.26 |
[유니티] 안드로이드 빌드 API level 29 오류 (12) | 2020.07.29 |
[유니티] 안드로이드 64비트 빌드 셋팅 (0) | 2020.07.27 |
[유니티] Failed to update Android SDK package list 빌드 오류 (4) | 2020.05.21 |
- Total
- Today
- Yesterday
- Connecting Jenkins
- 젠킨스
- Add Node
- 언리얼 사용자 정의 구조체
- Jenkins
- 유니티 직소퍼즐 구현
- 언리얼 빌드
- 언리얼 기초
- UHT
- C++
- refusing to run with root privileges
- Connecting Jenkins Agent
- 젠킨스 에이전트 연결
- 빌드 주기
- 백준
- c언어강의
- C언어기초
- 깃 용량문제
- 유니티
- c언어 기초
- 안드로이드
- 언리얼
- 알고리즘
- Unreal Header Tool
- 깃 허브 오류 해결
- 알고리즘기초
- dfs
- 구글맵
- Jenkins Build Periodically
- 안드로이드 구글맵
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |