Unity 限时使用 限制试用时间和使用次数

【时间限制】修改Start()函数里的minTime和maxTime时间即可。限制时间也可精确到秒,比如:

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

【次数限制】SetPlayUseNumber()为限制次数方法,修改键值名就可以重新计算("UseTime")

本脚本是限制时间和次数的搭配使用,可自行修改。

 

//***************************************************
//作用:限制使用时间或次数
//用法:时间限制,修改Start()函数里的方法即可
//SetPlayUseNumber()为限制次数方法,修改键值名("UseTime")就可以重新计算
//
//***************************************************
using Microsoft.Win32;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SetUserTime : MonoBehaviour {

    //注册名,可自行修改
    string UseTime = "UseTime";
    //试用次数
    int num = 500;
    //到期提示文字(提示面板)
    public Button Btn_expire;

    // Use this for initialization
    void Start () {
        //===(比如从3月1日开始计算,到4月1日结束)
        //只要小于minTime时间或大于maxTime时间,将停止使用
        DateTime minTime = Convert.ToDateTime("2019-3-1");
        DateTime maxTime = Convert.ToDateTime("2019-4-1");
        if (minTime > DateTime.Now || DateTime.Now > maxTime)
        {
            //===到期后,超时提示
            UseTime = "到期了";
            num = 0;
            print("到期了");
        }

        //===本方法放在此处,可以实现时间和次数同时限制
        SetPlayUseNumber();
        

        //if (minTime < DateTime.Now && DateTime.Now < maxTime)
        //{
        //    //===用于限时功能
        //    //在这段时间内能使用xx功能
        //}
    }

    /// <summary>
    /// 设置用户使用次数
    /// </summary>
    void SetPlayUseNumber()
    {
        RegistryKey RootKey, RegKey;
        //项名为:HKEY_CURRENT_USER\Software
        RootKey = Registry.CurrentUser.OpenSubKey("SOFTWARE", true);
        //打开子项:HKEY_CURRENT_USER\Software\MyRegDataApp
        if ((RegKey = RootKey.OpenSubKey("MyProjectToControlUseTime", true)) == null)
        {
            RootKey.CreateSubKey("MyProjectToControlUseTime"); //不存在,则创建子项
            RegKey = RootKey.OpenSubKey("MyProjectToControlUseTime", true);
            RegKey.SetValue(UseTime, (object)num);//创建键值,存储可使用次数
            print("实例化");
            return;
        }
        try
        {
            object usetime = RegKey.GetValue(UseTime);//读取键值,可使用次数
            print("还可以使用:" + usetime + "次");
            int newtime = int.Parse(usetime.ToString()) - 1;//可使用次数减1
            if (newtime < 0)
            {
                //到期退出程序
                RegKey.SetValue(UseTime, (object)newtime);
                Btn_expire.gameObject.SetActive(true);
                //Btn_expire.gameObject.transform.GetChild(0).GetComponent<Text>().text="试用已到期,请联系管理员";

                Invoke("OnQuit", 3);//延时退出
            }
            else
            {
                RegKey.SetValue(UseTime, (object)newtime);    //更新键值,可使用次数减1
                //Btn_expire.gameObject.SetActive(false);

            }
        }
        catch
        {
            RegKey.SetValue(UseTime, (object)num);
            print("首次进入,更新使用次数");
        }
    }

    private void OnQuit()
    {
        Application.Quit();
    }
}


====================================================

扩展添加:通过修改xml配置文件来改变限制的时间。方便已停手项目需更改试用期时间,而反复打包的问题。

做法:复制一个xml文件并改名为officeAll.xml,然后在里面增加一行<serverToTime>2020-12-31</serverToTime>,再添加以下代码到SetUserTime脚本中,并且把serverToTime作为获取到的最终限制时间赋给maxTime。

void Start(){

        //serverToTime 通过从配置文件中读取限时操作
        string path_xml = System.Environment.CurrentDirectory + @"\ComputeBook\officeAll.xml";
        string serverToTime;
        if (System.IO.File.Exists(path_xml))
        {
            XmlDocument xmldoc = new XmlDocument();
            xmldoc.Load(path_xml);
            //在配置文件中第888行为实际有效时间,其余为迷惑性文件
            serverToTime = xmldoc.GetElementsByTagName("ServerToTime")[0].ChildNodes[0].InnerText;
        }
        else
        {
            serverToTime = "2020-12-31";
        }


       //...
        DateTime minTime = Convert.ToDateTime("2019-3-1");
        DateTime maxTime = Convert.ToDateTime(serverToTime );
       //...
       //...

}

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值