Unity为软件添加使用有效期的具体步骤

功能需求:为软件设定一个使用有效期,当超过指定时间后,程序无法运行。

实现思路:定义一个常量,用于记录一个时间,我们称之为标记时间,使用当前时间减去标记时间,如果时间间隔大于设定的有效期,退出程序。

具体步骤:

1.定义标记时间常量:

//标记时间
private const string flag = "2022-03-17 17:11:25";

使用DateTime.Parse可将其转换为DateTime类型:

DateTime flagTime = DateTime.Parse(flag);

2.获取当前时间:

DateTime nowTime = DateTime.Now;

3.计算时间间隔:

TimeSpan span = nowTime - flagTime;

4.判断时间间隔是否大于有效期:

if (span.Days >= expires) Application.Quit();

但是这样这样实现会有一个问题,DateTime.Now获取的是本地计算机时间,如果用户故意修改计算机的时间,那么这个功能将无意义。

因此将获取当前时间的步骤修改为调用网络接口来获取时间,这里以如下这个接口为例:

https://apps.game.qq.com/CommArticle/app/reg/gdate.php

使用GET方式调用接口,代码如下:

using System;
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class Example : MonoBehaviour
{
    //标记时间
    private const string flag = "2022-03-17 17:11:25";
    //有效期 单位:天
    private const int expires = 30;
    private void Start()
    {
        StartCoroutine(RequestCoroutine());
    }
    private IEnumerator RequestCoroutine()
        string url = "https://apps.game.qq.com/CommArticle/app/reg/gdate.php";
        using (UnityWebRequest request = UnityWebRequest.Get(url))
        {
            yield return request.SendWebRequest();
            if(request.result == UnityWebRequest.Result.Success)
            {
                Debug.Log(request.downloadHandler.text);
            }
            else
                Debug.LogError($"get time failed: {request.error}");
        }
}

调用接口我们可以收到如图所示的响应,我们只需要通过Split函数将字符串分割,获取到等号后面的部分,再使用Substring函数截取‘’符号中间的部分即可:

string timeStr = request.downloadHandler.text.Split('=')[1];
timeStr = timeStr.Trim().Substring(1, timeStr.Length - 4);
Debug.Log(timeStr);

完整代码:

using System;
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class Example : MonoBehaviour
{
    //标记时间
    private const string flag = "2022-03-17 17:11:25";
    //有效期 单位:天
    private const int expires = 30;
    private void Start()
    {
        StartCoroutine(RequestCoroutine());
    }
    private IEnumerator RequestCoroutine()
        string url = "https://apps.game.qq.com/CommArticle/app/reg/gdate.php";
        using (UnityWebRequest request = UnityWebRequest.Get(url))
        {
            yield return request.SendWebRequest();
            if(request.result == UnityWebRequest.Result.Success)
            {
                Debug.Log(request.downloadHandler.text);
                string timeStr = request.downloadHandler.text.Split('=')[1];
                timeStr = timeStr.Trim().Substring(1, timeStr.Length - 4);
                Debug.Log(timeStr);
                DateTime flagTime = DateTime.Parse(flag);
                DateTime nowTime = DateTime.Parse(timeStr);
                TimeSpan span = nowTime - flagTime;
                Debug.Log(span);
                if (span.Days >= expires) Application.Quit();
            }
            else
                Debug.LogError($"get time failed: {request.error}");
        }
}

到此这篇关于Unity为软件添加使用有效期的文章就介绍到这了,更多相关Unity软件使用有效期内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于Unity编写一个九宫格抽奖软件

    目录 一.前言 二.效果图 三.案例制作 1.界面搭建 2.代码编写 3.效果演示 四.后言 一.前言 本博文标题和内容参考:基于原生JS实现H5转盘游戏 博主将改编成Unity版本. 二.效果图 三.案例制作 1.界面搭建 使用了9个图片作为奖品栏,然后一个chooseBox作为蒙版,一个StartBtn开始按钮放在中间 2.代码编写 新建脚本goLuckyDraw.cs 使用DoTween插件做动画,没有导入这个插件的下载导入一下 实现抽奖,主要有两个方面,一个是概率的设置,一个是动画 动画

  • Unity为软件添加使用有效期的具体步骤

    功能需求:为软件设定一个使用有效期,当超过指定时间后,程序无法运行. 实现思路:定义一个常量,用于记录一个时间,我们称之为标记时间,使用当前时间减去标记时间,如果时间间隔大于设定的有效期,退出程序. 具体步骤: 1.定义标记时间常量: //标记时间 private const string flag = "2022-03-17 17:11:25"; 使用DateTime.Parse可将其转换为DateTime类型: DateTime flagTime = DateTime.Parse(

  • C++软件添加dump调试打印日志(推荐)

    C++软件添加dump调试打印日志(推荐) #include <DbgHelp.h> #pragma comment(lib, "dbghelp.lib") LONG WINAPI TopLevelExceptionFilter(struct _EXCEPTION_POINTERS *pExceptionInfo) { //cout << "Enter TopLevelExceptionFilter Function" << en

  • Unity给物体添加多个Tag的实现

    在unity中,我们经常通过给物体添加标签来判断这个物体是不是我们想要的 但是unity默认只能添加一个标签,那如果我们要给一个物体添加多个标签应该怎么办 首先,我们定义一个Tag.cs类,这个类用来存储物体的tag信息 public class Tags : MonoBehaviour{ public List<string> tags=new List<string>(); } 然后创建一个单例类TagManager.cs用来管理tag public class TagMana

  • Unity脚本自动添加头部注释的全过程

    目录 Unity脚本自动添加头部注释 1. 修改Unity模板 2. 通过代码修改为动态的 结语 Unity脚本自动添加头部注释 就是创建.cs文件时自动添加作者名,创建时间,文件名等 看示例,我们在Unity的project面板下先创建一个Scripts文件夹,然后在Scripts文件夹下创建一个脚本,命名为:Test.cs 然后就是这样: 因为这个是我已经成功的设置过了才会有这样的头部注释 1. 修改Unity模板 首先找到你的Unity的安装路径,找到这样的文件夹,文件名字是和版本相关的

  • vue项目添加多页面配置的步骤详解

    公司使用 vue-cli 创建的 vue项目 在初始化时并没有做多页面配置,随着需求的不断增加,发现有必要使用多页面配置.看了很多 vue多页面配置 的文章,基本都是在初始化时就配置了多页面.而且如果使用这些实现,需要调整当前项目的目录结构,这点也是不能接受的. 最后,参考这些文章,在不调整当前项目目录结构实现了多页面的配置的添加.这里做下记录.总结,方便以后复用.如果还能有幸帮助到有同样需求的童鞋的话,那就更好了. 实现步骤 1.添加新增入口相关文件; 2.使用变量维护多入口: 3.开发环境读

  • Navicat添加外键详细操作步骤

    前言 用Navicat为mysql数据库的两个表之间建立外键关系,出现"cannot add foreign key constraint"错误,操作了很久不知道怎么回事,发现竟然是.... 正文 想要建立class表与student表之间的外键连接,class为父表,student为子表 打开student的设计表. 如果c_id不允许为空则当,选择删除时-->>SET NULL就会出现Cannot add foreign key constraint的提示,这是因为删除

  • Pycharm创建python文件自动添加日期作者等信息(步骤详解)

    第一步 找到 Preferences,点击进入.进入后找到 Editor – File and Code Templates – Python Script . 第二步 添加自己所需要的信息 第三步 添加完成后,点击 OK 键进行保存. 新建python文件就会看到已添加的默认信息. 常用配置 #-- coding: utf-8 -- #@Time : ${DATE} ${TIME} #@Author : XXXX #@Email : XXXX@qq.com #@File : ${NAME}.p

  • Flutter添加页面过渡动画实现步骤

    目录 正文 使用插件探索不同的转换 步骤 1: 在 pubspec.yaml 中添加页面动画转换 步骤 2: 在 PageOne 上导入库 步骤3.添加以下导航代码行 其他类型转换的完整代码: 总结 正文 大家好,在这篇文章中,我们将学习如何添加动画,同时从一个页面到其他在 Flutter.我们将覆盖不同类型的动画和实现基本动画 Flutter 使用包页动画过渡. 动画在提升用户体验方面起着至关重要的作用,但动画到底是什么呢? 设计语言,例如 Material,定义了在路线(或屏幕)之间转换时的

  • c# 调用Surfer软件,添加引用的具体操作方法

    c#调用surfer软件,添加应用的方法: 1.在项目文件上右键->添加引用 2.选择COM标签页 3.找到Surfer 9 type library 4.添加 如图所示:

  • 图文详解添加DNS服务器的操作步骤

    用于安装DNS服务器的计算机必须使用静态IP地址,如172.16.16.99.系统下载安装完DNS服务器组件后,单击"开始"-管理工具"-"DNS"命令,就能打开"dnsmgmt"控制台,如图1所示.在该控制台中,可以完成DNS服务器的设置工作.在WindowsServer2003系统中默认的是将本地计算机作为DNS服务器的硬件设备,即将本地计算机的IP地址或名称指定给DNS服务器,图2是将YL服务器指定给[)NS服务器. "

随机推荐