unity3d實(shí)現(xiàn)七天簽到功能
本文實(shí)例為大家分享了unity3d實(shí)現(xiàn)七天簽到功能的具體代碼,供大家參考,具體內(nèi)容如下
在很多游戲中都有簽到功能,(這里記錄的是7天連續(xù)簽到功能的實(shí)現(xiàn))
一、功能分析
1.當(dāng)天是否簽到的判斷
2.簽到天數(shù)是否連續(xù)和是否完成了7天的簽到(不連續(xù)或者已經(jīng)完成了7天連續(xù)簽到,需要清楚數(shù)據(jù),重新計(jì)算簽到)
最主要的也就是這兩個(gè)功能需要實(shí)現(xiàn),其他的數(shù)據(jù)存儲(chǔ)包括:連續(xù)簽到次數(shù),上一次簽到日期。
下面的代碼是默認(rèn)簽到送金幣。不過使用的時(shí)候還是需要自己去刪減或者增加自己的代碼:
using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using UnityEngine.UI; using DG.Tweening; public class Jungle_DailyCheck : MonoBehaviour { /// <summary> /// 獲取簽到次數(shù) /// </summary> /// <returns>The sign number.</returns> public int GetSignNum() { if (PlayerPrefs.HasKey("signNum")) return PlayerPrefs.GetInt("signNum"); return 0; } /// <summary> /// 設(shè)置簽到次數(shù) /// </summary> /// <param name="num">Number.</param> public void SetSignNum(int num) { PlayerPrefs.SetInt("signNum", num); } /// <summary> /// 獲取上次簽到日期 /// </summary> /// <returns>The sign data.</returns> public string GetSignData() { if (PlayerPrefs.HasKey("signData")) return PlayerPrefs.GetString("signData"); return DateTime.MinValue.ToString(); } /// <summary> /// 設(shè)置上次簽到日期 /// </summary> public void SetSignData(DateTime data) { PlayerPrefs.SetString("signData", data.ToString()); } int signNum;//簽到次數(shù) DateTime today;//今日日期 DateTime signData;//上次簽到日期 private bool isRewardTake = false; public Text text_Getcoin; private void Start() { today = DateTime.Now; signNum = GetSignNum(); signData = DateTime.Parse(GetSignData()); if (IsOneDay(signData, today)) { return; } // Debug.Log(string.Format("lastSign==={0},today===={1}", signData, today)); //新的簽到周期,需要清除簽到存檔(清楚簽到次數(shù)和上一次簽到日期) if (NeedClean()) { PlayerPrefs.DeleteKey("signNum"); PlayerPrefs.DeleteKey("signData"); } signNum = GetSignNum(); OnBtnGetRewordClick(); } //簽到按鈕點(diǎn)擊 public void OnBtnGetRewordClick() { signNum++; signData = today; //更新存檔 SetSignData(signData); SetSignNum(signNum); //給用戶加金幣 DataManager.instance.SetCoin(DataManager.instance.GetCoin() + signNum * 3); text_Getcoin.transform.GetChild(0).GetComponent<Text>().text = "Get" + " " + signNum * 3 + " coins"; text_Getcoin.gameObject.SetActive(true); text_Getcoin.transform.GetChild(0).transform.DOScale(1.2f, 2.5f).onComplete = delegate { text_Getcoin.transform.GetChild(0).transform.localScale = new Vector3(1, 1, 1); text_Getcoin.gameObject.SetActive(false); }; } //判斷是否是同一天 bool IsOneDay(DateTime t1, DateTime t2) { return (t1.Year == t2.Year && t1.Month == t2.Month && t1.Day == t2.Day); } //需要清除數(shù)據(jù)(當(dāng)簽到天數(shù)大于等于7天或者簽到間隔大約一天,則重置數(shù)據(jù)) bool NeedClean() { TimeSpan tsNow = new TimeSpan(today.Ticks); TimeSpan tsSign = new TimeSpan(signData.Ticks); TimeSpan tsDur = tsNow.Subtract(tsSign).Duration(); // Debug.Log(string.Format("days====={0},hours======{1},minutes====={2}", tsDur.Days, tsDur.Hours, tsDur.Minutes)); signNum = GetSignNum(); if (signNum >= 7 || tsDur.Days > 1) { return true; } else { return false; } } }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
IIS下調(diào)用證書出現(xiàn)異常的解決方法 (C#)
這篇文章主要為大家詳細(xì)介紹了IIS下調(diào)用證書出現(xiàn)異常的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05