[Unity] 간단한 기간 한정 기능 작성 (DateTime 이용 메모)
클라이언트 전용 처리
TimeLimit.cs 컴포넌트 생성
public class TimeLimit : MonoBehaviour
{
/// <summary>
/// 限定日にち
/// </summary>
[SerializeField]
private LimitedTime limitedtime;
[SerializeField]
private GameObject description;
private void Start()
{
//起動時、期間内時チェック
if (PlayerPrefs.GetString("HasExpired", "false") == "false")
{
//期間切れ処理
if (HasExpired(limitedtime))
PlayerPrefs.SetString("HasExpired", "true");
}
//期間切れ処理
if (PlayerPrefs.GetString("HasExpired", "false") == "true")
description.SetActive(true);
//期間内処理
else
SceneManager.LoadScene("Main");
}
/// <summary>
/// 期間切れかどうかを返す
/// true:期間切れ、false:期間内
/// </summary>
private bool HasExpired(LimitedTime limit)
{
//現在の UTC 日時
var now = DateTime.UtcNow;
//限定日時取得
var limitdate = GetDateTime(limit);
//残り日時処理
var remaining = limitdate - now;
//残り日数チェック
if (remaining.TotalDays < 0)
return true;
return false;
}
/// <summary>
/// DateTimeを返す
/// 日にち範囲外の処理をする。
/// </summary>
private DateTime GetDateTime(LimitedTime limit){
//limit.year年範囲外処理
var year = Mathf.Clamp(limit.year, 2018, 2028);
//limit.month月範囲外処理
var month = Mathf.Clamp(limit.month, 1, 12);
//limit.month月の日数を取得
var days = DateTime.DaysInMonth(year, month);
//日範囲外処理
var day = Mathf.Clamp(limit.day, 1, days);
return new DateTime(year, month, day);
}
}
[Serializable]
public class LimitedTime
{
[Range(2019, 2028)]
public int year;
[Range(1, 12)]
public int month;
[Range(1, 31)]
public int day;
}
장면에서 GameObject를 만들고 TimeLimit 컴포넌트를 추가하고 Year/Month/Day를 지정합니다.
Description에는 표시시킬 GameObject를 첨부

Reference
이 문제에 관하여([Unity] 간단한 기간 한정 기능 작성 (DateTime 이용 메모)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ptkyoku/items/e4338c2ab1b6d32c8438텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)