Unity3D日常開發】(二十)Unity3D實現“使用次數限制以及時間限制功能”

      網友投稿 1302 2025-04-02

      推薦閱讀

      CSDN主頁

      GitHub開源地址

      Unity3D插件分享

      簡書地址

      我的個人博客

      QQ群:1040082875

      一、前言

      在使用Unity進行軟件開發的時候,會遇到實現程序的使用次數限制,以及使用的時間區間限制,說白就是保護程序的一種措施。我們用的方法是,新建注冊表,增加鍵值對,修改鍵值,完成對程序的使用權限控制。當然還有更加安全的方法,包括獲取硬盤編號,還有電子狗加密等等,這些就以后討論。

      【Unity3D】實現“使用次數限制以及時間限制功能”

      一、時間限制

      二、次數限制

      三、同時控制時間和次數

      二、參考文章

      【Unity3D日常開發】(二十)Unity3D實現“使用次數限制以及時間限制功能”

      三、時間限制

      修改Start()函數里的

      minTime

      maxTime

      時間即可。限制時間也可精確到秒,比如:

      DateTime minTime = Convert.ToDateTime(“2019-4-23 12:22:05”);

      代碼:

      using System; using UnityEngine; public class SetUserTime : MonoBehaviour { //用戶是否超過使用日期 bool Islate = false; // Use this for initialization void Start() { //===(比如8月1日開始計算,到8月8日結束) //小于minTime 時間或者大于maxTime時間 ,將不可使用 DateTime minTime = Convert.ToDateTime("2019-8-1 15:29:00"); DateTime maxTime = Convert.ToDateTime("2019-8-8 15:29:00"); if (minTime > DateTime.Now || DateTime.Now > maxTime) { //不在使用時間內,會直接退出程序 Islate = true; } SetPlayUseNumber(); } ///

      /// 設置用戶使用次數 /// void SetPlayUseNumber() { //異常捕捉,如果發生異常,比如閃退,限制改為false try { //限制使用時間,如果不在這個區間內,直接退出程序 if (Islate) { Invoke("OnExit", 2);//延時退出,可在退出前顯示提示消息 } } catch { Islate = false; } } //出處程序 private void OnExit() { Application.Quit(); } }

      四、次數限制

      SetPlayUseNumber()為限制次數方法,修改鍵值名就可以重新計算(“UseTime”)

      本腳本是限制時間和次數的搭配使用,可自行修改。

      腳本:

      using Microsoft.Win32; using UnityEngine; public class SetUserTime1 : MonoBehaviour { //最大使用次數 int MaxUsageCount = 3; void Start() { SetPlayUseNumber(); } ///

      /// 設置用戶使用次數 /// void SetPlayUseNumber() { //創建鍵值對 RegistryKey RootKey, RegKey; //項名為:HKEY_CURRENT_USER\Software RootKey = Registry.CurrentUser.OpenSubKey("SOFTWARE", true); //打開子項:HKEY_CURRENT_USER\Software\MyRegDataApp if ((RegKey = RootKey.OpenSubKey("TestToControlUseTime", true)) == null) { RootKey.CreateSubKey("TestToControlUseTime"); //不存在,則創建子項 RegKey = RootKey.OpenSubKey("TestToControlUseTime", true); //打開鍵值 RegKey.SetValue("UseTime7", (object)MaxUsageCount); //創建鍵值,存儲最大可使用次數 return; } //異常捕捉,如果出現程序異常,比如閃退,次數更新為開始設置的最大使用次數 try { object usetime = RegKey.GetValue("UseTime7"); //讀取鍵值,可使用次數 print("還可以使用:" + usetime + "次"); //使用次數減1 int newtime = int.Parse(usetime.ToString()) - 1; if (newtime < 0) { //到期退出程序 RegKey.SetValue("UseTime7", (object)newtime); Invoke("OnExit", 2);//延時退出,可在退出前顯示提示消息 } else { RegKey.SetValue("UseTime7", (object)newtime); //更新鍵值,可使用次數減1 } } catch { RegKey.SetValue("UseTime7", (object)MaxUsageCount); print("更新使用次數"); } } /// /// 退出程序 /// private void OnExit() { Application.Quit(); } }

      五、同時控制時間和次數

      using Microsoft.Win32; using System; using UnityEngine; public class SetUserTime2 : MonoBehaviour { //最大使用次數 int MaxUsageCount = 3; //用戶是否超過使用日期 bool Islate = false; void Start() { //===(比如8月1日開始計算,到8月8日結束) //小于minTime 時間或者大于maxTime時間 ,將不可使用 DateTime minTime = Convert.ToDateTime("2019-8-1 15:29:00"); DateTime maxTime = Convert.ToDateTime("2019-8-8 15:29:00"); if (minTime > DateTime.Now || DateTime.Now > maxTime) { //不在使用時間內,會直接退出程序 Islate = true; } SetPlayUseNumber(); } ///

      /// 設置用戶使用次數 /// void SetPlayUseNumber() { //創建鍵值對 RegistryKey RootKey, RegKey; //項名為:HKEY_CURRENT_USER\Software RootKey = Registry.CurrentUser.OpenSubKey("SOFTWARE", true); //打開子項:HKEY_CURRENT_USER\Software\MyRegDataApp if ((RegKey = RootKey.OpenSubKey("TestToControlUseTime", true)) == null) { RootKey.CreateSubKey("TestToControlUseTime"); //不存在,則創建子項 RegKey = RootKey.OpenSubKey("TestToControlUseTime", true); //打開鍵值 RegKey.SetValue("UseTime7", (object)MaxUsageCount); //創建鍵值,存儲最大可使用次數 return; } //異常捕捉,如果出現程序異常,比如閃退,次數更新為開始設置的最大使用次數 try { object usetime = RegKey.GetValue("UseTime7"); //讀取鍵值,可使用次數 print("還可以使用:" + usetime + "次"); //使用次數減1 int newtime = int.Parse(usetime.ToString()) - 1; if (newtime < 0 || Islate) { //到期退出程序 RegKey.SetValue("UseTime7", (object)newtime); Invoke("OnExit", 2);//延時退出,可在退出前顯示提示消息 } else { RegKey.SetValue("UseTime7", (object)newtime); //更新鍵值,可使用次數減1 } } catch { RegKey.SetValue("UseTime7", (object)MaxUsageCount); Islate = false; print("更新使用次數"); } } /// /// 退出程序 /// private void OnExit() { Application.Quit(); } }

      unity

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:段首縮進在哪?(什么叫首行縮進)
      下一篇:如何在Excel中從另一個工作簿創建下拉列表?
      相關文章
      亚洲国产中文在线视频| 亚洲成人激情在线| 亚洲一区二区三区播放在线| 18亚洲男同志videos网站| 亚洲国产高清在线| 国产AV无码专区亚洲Av| 亚洲精品自产拍在线观看| 久久精品国产精品亚洲下载| 亚洲精品视频在线看| 亚洲精品高清一二区久久| 亚洲精品无码AV中文字幕电影网站| 伊在人亚洲香蕉精品区麻豆| 日韩精品亚洲专区在线观看| 亚洲成AV人在线观看网址| 亚洲av麻豆aⅴ无码电影| 亚洲免费视频一区二区三区| 亚洲综合区小说区激情区| 亚洲女人被黑人巨大进入| 久久国产成人精品国产成人亚洲 | 小说区亚洲自拍另类| 国产亚洲视频在线观看网址| 亚洲狠狠爱综合影院婷婷| 亚洲女初尝黑人巨高清| 亚洲AV无码专区国产乱码4SE| 亚洲成色在线影院| 亚洲日韩乱码久久久久久| 亚洲娇小性色xxxx| 亚洲精品自偷自拍无码| 天天综合亚洲色在线精品| 国产日韩成人亚洲丁香婷婷| 国产成A人亚洲精V品无码| 夜夜亚洲天天久久| 亚洲AV无码乱码在线观看代蜜桃| 中文无码亚洲精品字幕| 成人精品国产亚洲欧洲| 色噜噜AV亚洲色一区二区| 久久久久亚洲精品无码系列| 亚洲熟妇色自偷自拍另类| 久久久国产亚洲精品| 国产亚洲精品欧洲在线观看| 亚洲精品美女久久久久99小说|