最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity登錄注冊(cè)時(shí)限制發(fā)送驗(yàn)證碼次數(shù)功能的解決方法

 更新時(shí)間:2020年01月01日 09:07:50   作者:尋漠瀟雨  
這篇文章主要為大家詳細(xì)介紹了Unity登錄注冊(cè)時(shí)限制發(fā)送驗(yàn)證碼次數(shù)功能的解決方案,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

當(dāng)我們需要在Unity客戶端做一個(gè)限制功能,比如按鈕 (最好是發(fā)送驗(yàn)證碼按鈕)要求每天只能點(diǎn)擊三次,等到第二天又有三次機(jī)會(huì),這個(gè)過(guò)程不涉及到服務(wù)端消息,只涉及到本地存儲(chǔ),以下是我的解決方案:

直接上代碼:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UniRx;
using System;
using System.IO;
using System.Text;
using System.Globalization;
public class RegisterPanel : MonoBehaviour
  {
    private LoginUIPanel mLoginUIPanel;
    StreamWriter writer;
    StreamReader reader;
 //本地存儲(chǔ)手機(jī)號(hào)
    private string set_phonenum;
 //同一個(gè)手機(jī)號(hào)碼使用次數(shù)
    private int useNum=1;
    FileInfo file;
    private Button btn_GetMsgCode;
/**倒計(jì)時(shí) */
    private Text txt_CountDownTimer;
 
 
}
 private void Awake()
  {
   //獲取驗(yàn)證碼按鈕
      btn_GetMsgCode = input_MsgCode.transform.Find("Btn_GetVerficationCode").GetComponent<Button>();
btn_GetMsgCode.onClick.AddListener(OnGetMsgCodeClick);
 txt_CountDownTimer = btn_GetMsgCode.transform.Find("Text").GetComponent<Text>();
 
}
 private void OnEnable()
    {
 
 ResetGetMsgCode();
}
/**
     * 獲取驗(yàn)證碼 
     */
    private void OnGetMsgCodeClick()
    {
     
      if (!mLoginUIPanel.CheckGetMsgCode(input_Account.text))
      {
        Debug.Log("沒(méi)有輸入");
        return;
      }
     
      set_phonenum = input_Account.text.ToString();
 
      if (Limit())
      {
        Debug.Log("返回true");
        return;
      }
      else
      {
        int timer = 60;
        intervalStream = Observable.Interval(TimeSpan.FromSeconds(1))
          .Where(value => { return timer > 1; })
          .SubscribeToText(txt_CountDownTimer, value =>
          {
 
            btn_GetMsgCode.interactable = false;
            
            return (timer--).ToString() + "秒";
          });
        //.AddTo(this);  //綁定生命周期
 
        timeStream = Observable.Timer(TimeSpan.FromSeconds(60))
           .SubscribeToText(txt_CountDownTimer, _ =>
           {
             btn_GetMsgCode.interactable = true;
             return "獲取驗(yàn)證碼";
           });
        //.AddTo(this);
      }
 
     
    }
 private bool Limit()
    {
      if (PlayerPrefs.HasKey(set_phonenum))
      {
        mLoginUIPanel.ShowToast("號(hào)碼已經(jīng)被注冊(cè)過(guò)!");
        return true;
      }
      PlayerPrefs.SetString(set_phonenum, set_phonenum);
      //Application.streamingAssetsPath
 
      //獲取當(dāng)前時(shí)間天數(shù)
      DateTime now = DateTime.Now;
      DateTimeOffset nowtimesss = DateTimeOffset.Now;
      string nowtime = now.Day.ToString();
      string filenames = Application.dataPath+"/num.txt";
     
      //寫入當(dāng)前次數(shù)
      //第一次創(chuàng)建文件
      FileInfo file = new FileInfo(filenames);
      if (!file.Exists)
      {
      
        file.CreateText().Close();
        file.CreationTimeUtc = nowtimesss.UtcDateTime;
        Debug.Log("第一次創(chuàng)建" + file.CreationTimeUtc);
        string bb = file.CreationTime.ToString();
        char[] ss = new char[] {'/'};
        string[] nnn = bb.Split(ss);
        Debug.Log(nnn[1]);
        PlayerPrefs.SetString("FileTime", nnn[1]);
        PlayerPrefs.SetInt("i", 0);
      }
 
    
      if (Convert.ToInt32(nowtime)!=(Convert.ToInt32(PlayerPrefs.GetString("FileTime"))))
      {
        //刷新次數(shù)
        Debug.Log("刷新");
        FileStream stream = File.Open(filenames, FileMode.OpenOrCreate, FileAccess.Write);
        stream.Seek(0, SeekOrigin.Begin);
        stream.SetLength(0);
        stream.Close();
        //重置次數(shù)和時(shí)間
        PlayerPrefs.SetInt("i", 0);
        PlayerPrefs.SetString("FileTime", nowtime);
      }
      //再判斷次數(shù)
      //如果是當(dāng)天
      if ((Convert.ToInt32(PlayerPrefs.GetString("FileTime")))== Convert.ToInt32(nowtime))
      {
        Debug.Log("執(zhí)行");
       
 
 
        if (PlayerPrefs.GetInt("i") > 2)
        {
          Debug.Log("次數(shù)已達(dá)上限");
          mLoginUIPanel.ShowToast("次數(shù)已達(dá)上限,請(qǐng)明天再來(lái)!");
 
          return true;
        }
        WriteIntoTxt(useNum, filenames, file);
        //讀取本地?cái)?shù)據(jù)
        ReadOutTxt(filenames);
        //排序
        Allmytxt.Sort();
        //對(duì)當(dāng)前號(hào)碼取最大值存入
        PlayerPrefs.SetInt("i", Allmytxt[Allmytxt.Count - 1]);
        useNum++;
        int a = 3 - Allmytxt[Allmytxt.Count - 1];
        mLoginUIPanel.ShowToast("今天還剩下"+ a+ "次注冊(cè)機(jī)會(huì)");
        Debug.Log(PlayerPrefs.GetInt("i"));
        // Debug.Log("當(dāng)前文件日期" + Convert.ToInt32(PlayerPrefs.GetString("FileTime")));
        //先判斷時(shí)間
        return false;
      }
      
      return false;
    }
 /**
     * reset重置倒計(jì)時(shí)·
     */
    public void ResetGetMsgCode()
    {
      btn_GetMsgCode.interactable = true;
      txt_CountDownTimer.text = "獲取驗(yàn)證碼";
    }
 //把所有的數(shù)據(jù)寫入文本中
    public void WriteIntoTxt(int message,string filename,FileInfo file)
    {
 
      // FileInfo file = new FileInfo(filename);
 
      //最后一次修改日期并存儲(chǔ)
      
      
 
      if (!file.Exists)
      {
        writer = file.CreateText();
      }
      else
      {
        writer = file.AppendText();
      }
      writer.WriteLine(message);
      writer.Flush();
      writer.Dispose();
      writer.Close();
 
      string bb = file.LastAccessTime.ToString();
      char[] ss = new char[] { '/' };
      string[] nnn = bb.Split(ss);
 
      Debug.Log(nnn[1]);
       
        PlayerPrefs.SetString("FileTime", nnn[1]);
 
    }
    //讀取次數(shù) 存儲(chǔ)到列表中
    public void ReadOutTxt(string filename)
    {
      Allmytxt.Clear();
      reader = new StreamReader(filename, Encoding.UTF8);
      string text;
      int line = 0;
      while ((text = reader.ReadLine()) != null)
      {
        ++line;
        
       // Allmytxt.Add(int.Parse(text));
      }
      //利用文本的行數(shù)來(lái)判斷次數(shù)
      Allmytxt.Add(line);
      Debug.Log(line);
      reader.Dispose();
      reader.Close();
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • C#中WinForm程序退出方法技巧總結(jié)

    C#中WinForm程序退出方法技巧總結(jié)

    這篇文章主要介紹了C#中WinForm程序退出方法,實(shí)例總結(jié)了技巧退出WinForm程序窗口的各種常用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12
  • c#使用S22.Imap收劍靈激活碼郵件代碼示例(imap收郵件)

    c#使用S22.Imap收劍靈激活碼郵件代碼示例(imap收郵件)

    一個(gè)IMAP收發(fā)郵件的類庫(kù)S22.IMAP,方便易用,下面來(lái)個(gè)例子可以收劍靈激活碼郵件
    2013-12-12
  • c#操作Redis的5種基本類型匯總

    c#操作Redis的5種基本類型匯總

    這篇文章主要給大家介紹了關(guān)于c#操作Redis的5種基本類型,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C# IEnumerator枚舉器的具體使用

    C# IEnumerator枚舉器的具體使用

    本文主要介紹了C# IEnumerator枚舉器的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 輕松學(xué)習(xí)C#的運(yùn)算符

    輕松學(xué)習(xí)C#的運(yùn)算符

    輕松學(xué)習(xí)C#的運(yùn)算符,對(duì)C#的運(yùn)算符感興趣的朋友可以參考本篇文章,幫助大家更靈活的運(yùn)用C#的運(yùn)算符
    2015-11-11
  • C# cmd中修改顯示(顯示進(jìn)度變化效果)的方法

    C# cmd中修改顯示(顯示進(jìn)度變化效果)的方法

    好多人想在運(yùn)行或者調(diào)試含有大量數(shù)據(jù)或者比較慢C#程序的時(shí)候能夠顯示自己的程序完成的程度,這里有一個(gè)方法能發(fā)不斷地修改cmd的同一行,以達(dá)到顯示完成百分比的目的
    2013-04-04
  • C#生成互不相同隨機(jī)數(shù)的實(shí)現(xiàn)方法

    C#生成互不相同隨機(jī)數(shù)的實(shí)現(xiàn)方法

    這篇文章主要介紹了C#生成互不相同隨機(jī)數(shù)的實(shí)現(xiàn)方法,文中詳細(xì)描述了C#生成互不相同隨機(jī)數(shù)的各個(gè)步驟及所用到的函數(shù),非常具有借鑒價(jià)值,需要的朋友可以參考下
    2014-09-09
  • 純C#實(shí)現(xiàn)Hook功能詳解

    純C#實(shí)現(xiàn)Hook功能詳解

    這篇文章主要介紹了純C#實(shí)現(xiàn)Hook功能詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • 在winform中嵌入第三方軟件窗體的實(shí)踐分享

    在winform中嵌入第三方軟件窗體的實(shí)踐分享

    這篇文章主要介紹了在winform中如何嵌入第三方軟件窗體的實(shí)踐分享,文中通過(guò)代碼示例和圖文給大家介紹的非常詳細(xì),具有一定參考價(jià)值,需要的朋友可以參考下
    2024-03-03
  • C#條件拼接Expression<Func<T, bool>>的使用

    C#條件拼接Expression<Func<T, bool>>的使用

    本文主要介紹了C#條件拼接Expression<Func<T, bool>>的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評(píng)論

洛扎县| 甘德县| 望城县| 青龙| 马龙县| 宜章县| 玛多县| 靖边县| 稷山县| 芦溪县| 宜州市| 汉寿县| 连平县| 鄂托克旗| 龙陵县| 南乐县| 扶沟县| 甘南县| 台南市| 屯门区| 潞西市| 新野县| 延吉市| 涪陵区| 三江| 宁明县| 白银市| 绥芬河市| 陇南市| 侯马市| 淄博市| 类乌齐县| 綦江县| 郧西县| 谷城县| 西峡县| 新化县| 南丹县| 壤塘县| 天门市| 福清市|