推薦閱讀
CSDN主頁
GitHub開源地址
Unity3D插件分享
簡書地址
我的個人博客
QQ群:1040082875
一、前言
在使用Unity進行軟件開發的時候,會遇到實現程序的使用次數限制,以及使用的時間區間限制,說白就是保護程序的一種措施。我們用的方法是,新建注冊表,增加鍵值對,修改鍵值,完成對程序的使用權限控制。當然還有更加安全的方法,包括獲取硬盤編號,還有電子狗加密等等,這些就以后討論。
【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小時內刪除侵權內容。