Unity實(shí)現(xiàn)10天簽到系統(tǒng)
本文實(shí)例為大家分享了Unity實(shí)現(xiàn)10天簽到系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
實(shí)現(xiàn)功能:
正常在游戲中簽到,并把剩下的倒計(jì)時(shí)給顯示出來(lái)。時(shí)間是變化的,沒(méi)有用gif是顯示,將就著看…
廢話(huà)不多說(shuō),上代碼:
public class SignPanelUI : MonoBehaviour { public const string SignNumPrefs = "SignNum";//領(lǐng)取次數(shù)的字符串 public const string SignDataPrefs = "lastDay";//上次領(lǐng)取的時(shí)間字符串 int signNum;//簽到次數(shù) 默認(rèn)是0 DateTime today;//今日日期 DateTime lastDay;//上次領(lǐng)取日期 TimeSpan Interval;//間隔時(shí)間 Button reviceButton;//領(lǐng)取按鈕 Text reviceText;//領(lǐng)取和時(shí)間Text bool isShowTime;//是否顯示時(shí)間 private void Awake() { reviceButton = transform.Find("Bg/bottomButton").GetComponent<Button>(); reviceButton.onClick.AddListener(OnSignClick); reviceText = reviceButton.transform.GetChild(0).GetComponent<Text>(); } private void OnEnable() { today = DateTime.Now; signNum = PlayerPrefs.GetInt(SignNumPrefs, 0); lastDay = DateTime.Parse(PlayerPrefs.GetString(SignDataPrefs, DateTime.MinValue.ToString())); if (IsOneDay())//今天日期是否大于領(lǐng)取日期 可以領(lǐng)取 { Debug.Log("可以領(lǐng)??!"); if (signNum >= 10)//重新計(jì)算簽到 { PlayerPrefs.DeleteKey(SignNumPrefs); //TODO:把獎(jiǎng)勵(lì)物品重置 } //TODO:把按鈕text變成領(lǐng)取 reviceText.fontSize = 25; reviceText.text = "領(lǐng)取"; reviceButton.interactable = true; } else //簽到日期未到 { isShowTime = true; reviceButton.interactable = false; reviceText.fontSize = 25; } } private void Update() { //TimeSpan time=DateTime.Now.AddDays(1).Date - DateTime.Now; //用后一天的時(shí)間減掉當(dāng)前的時(shí)間,得到剩下的時(shí)分秒 //Debug.Log(string.Format("{0:D2}:{1:D2}:{2:D2}s",time.Hours,time.Minutes,time.Seconds)); if (isShowTime) { Interval= lastDay.AddDays(1).Date - DateTime.Now; reviceText.text = string.Format("{0:D2}:{1:D2}:{2:D2}",Interval.Hours,Interval.Minutes,Interval.Seconds); } } //簽到領(lǐng)取獎(jiǎng)勵(lì)Button public void OnSignClick() { isShowTime = true; reviceButton.interactable = false; reviceText.fontSize = 25; signNum++;//領(lǐng)取次數(shù) lastDay = today; PlayerPrefs.SetString(SignDataPrefs, today.ToString()); PlayerPrefs.SetInt(SignNumPrefs, signNum); //TODO:獎(jiǎng)勵(lì) } //判斷是否可以簽到 private bool IsOneDay() { if (lastDay.Year == today.Year && lastDay.Month == today.Month && lastDay.Day == today.Day) { return false; } if (DateTime.Compare(lastDay, today) < 0)//DateTime.Compare(t1,t2) 返回<0 t1<t2 等于0 t1=t2 返回>0 t1>t2 { return true; } return false; } }
這是10天的簽到系統(tǒng),想要幾天的簽到可以自己設(shè)置。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#跨PC遠(yuǎn)程調(diào)用程序并顯示UI界面
這篇文章主要為大家介紹了使用C#跨PC遠(yuǎn)程調(diào)用程序并顯示UI界面,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05C#使用Twain協(xié)議實(shí)現(xiàn)掃描儀連續(xù)掃描功能
這篇文章主要介紹了C#使用Twain協(xié)議實(shí)現(xiàn)掃描儀連續(xù)掃描,只需一行代碼,就可實(shí)現(xiàn)一次掃描多張,且不需要更改掃描儀的任何設(shè)置,需要的朋友可以參考下2022-01-01C#難點(diǎn)逐個(gè)擊破(2):out返回參數(shù)
之前提到ref是將原方法中的參數(shù)影響的結(jié)果返回到調(diào)用它的方法中,out與ref類(lèi)似,相比之下,ref傳遞參數(shù)的地址,out是返回值。2010-02-02C#打開(kāi)php鏈接傳參然后接收返回值的關(guān)鍵代碼
這篇文章主要介紹了C#打開(kāi)php鏈接傳參然后接收返回值的關(guān)鍵代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08C# BeginInvoke實(shí)現(xiàn)異步編程方式
這篇文章主要介紹了C# BeginInvoke實(shí)現(xiàn)異步編程方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01C#使用linq查詢(xún)大數(shù)據(jù)集的方法
這篇文章主要介紹了C#使用linq查詢(xún)大數(shù)據(jù)集的方法,涉及C#調(diào)用linq進(jìn)行數(shù)據(jù)查詢(xún)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04