Unity3D日常开发】(二十)Unity3D实现“使用次数限制以及时间限制功能”

网友投稿 979 2022-05-29

推荐阅读

CSDN主页

GitHub开源地址

Unity3D插件分享

简书地址

我的个人博客

【Unity3D日常开发】(二十)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小时内删除侵权内容。

上一篇:ROS示例----TIAGo教程
下一篇:【Visual Studio 】Visual Studio 2019 软件安装
相关文章