【Unity】ログインボーナスを作ってみる

こんにちは。ピンビットです。
心理的なテクニックとして良さそうなログインボーナスをUnityで作ってみました。


まず、ざっくり書いたコードを貼ります。(このままでは使えないので自分で修正してね♡)


public int intervalHour = 15;//何時間ごとに貰えるか。

void Start () {
 if (PlayerPrefs.GetString ("lastGiftTime") == "") {
  PlayerPrefs.SetString ("lastGiftTime", System.DateTime.Now.ToBinary().ToString() );
 }

 System.DateTime now = System.DateTime.Now;
 System.DateTime lastGiftTime = System.DateTime.FromBinary (System.Convert.ToInt64 ( PlayerPrefs.GetString("lastGiftTime") ));


 if ( System.DateTime.Compare (now, lastGiftTime.AddHours (intervalHour)) > 0) {
  //ギフト貰えるを
  PlayerPrefs.SetString ("lastGiftTime", System.DateTime.Now.ToBinary().ToString() );

  //
  //貰えるときのコード
  //
 }

 if ( System.DateTime.Compare (now, lastGiftTime.AddHours (intervalHour)) < 0) {
  //ギフト貰えないなり
  System.TimeSpan remainDateTime = lastGiftTime.AddHours (intervalHour).Subtract (now);

  //
  //貰えないときのコード
  //
 }
}

せつめい

public int intervalHour;
は、何時間ごとにギフトが貰えるかです。


PlayerPrefs.GetString ("lastGiftTime")
これは最後にギフトをもらった時間を記録しています。

if (PlayerPrefs.GetString ("lastGiftTime") == "") {
 PlayerPrefs.SetString ("lastGiftTime", System.DateTime.Now.ToBinary().ToString() );
}
ここでは、最後にギフトをもらった時間が存在しないとき、すなわちPlayerPrefs.GetString("lastGiftTime")が空のときに現在の時間を最後にギフトを貰った時間としてセットしています。


System.DateTime.Compare (now, lastGiftTime.AddHours (intervalHour))
これは、現在の時間と、最後にギフトを貰った時間にintervalHourを加算した値を比較して、現在の時間のほうが進んでいるなら0より上を返し、違うなら0以下になり、同じなら0です。



さいごに

おれは使えてるので、質問があるならツイッターの@pin_pinbitまでオナシャス!
あと、変数名とか、用語間違いとか、説明が変とかアドバイスとかも嬉しいです。