unity3d實現(xiàn)七天簽到功能
更新時間:2021年04月20日 14:23:38 作者:yffgamestart
這篇文章主要為大家詳細介紹了unity3d實現(xiàn)七天簽到功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了unity3d實現(xiàn)七天簽到功能的具體代碼,供大家參考,具體內容如下
在很多游戲中都有簽到功能,(這里記錄的是7天連續(xù)簽到功能的實現(xiàn))
一、功能分析
1.當天是否簽到的判斷
2.簽到天數是否連續(xù)和是否完成了7天的簽到(不連續(xù)或者已經完成了7天連續(xù)簽到,需要清楚數據,重新計算簽到)
最主要的也就是這兩個功能需要實現(xiàn),其他的數據存儲包括:連續(xù)簽到次數,上一次簽到日期。
下面的代碼是默認簽到送金幣。不過使用的時候還是需要自己去刪減或者增加自己的代碼:
using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using UnityEngine.UI; using DG.Tweening; public class Jungle_DailyCheck : MonoBehaviour { /// <summary> /// 獲取簽到次數 /// </summary> /// <returns>The sign number.</returns> public int GetSignNum() { if (PlayerPrefs.HasKey("signNum")) return PlayerPrefs.GetInt("signNum"); return 0; } /// <summary> /// 設置簽到次數 /// </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> /// 設置上次簽到日期 /// </summary> public void SetSignData(DateTime data) { PlayerPrefs.SetString("signData", data.ToString()); } int signNum;//簽到次數 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)); //新的簽到周期,需要清除簽到存檔(清楚簽到次數和上一次簽到日期) if (NeedClean()) { PlayerPrefs.DeleteKey("signNum"); PlayerPrefs.DeleteKey("signData"); } signNum = GetSignNum(); OnBtnGetRewordClick(); } //簽到按鈕點擊 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); } //需要清除數據(當簽到天數大于等于7天或者簽到間隔大約一天,則重置數據) 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; } } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。