日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Unity為軟件添加使用有效期的具體步驟_C#教程

作者:CoderZ1010 ? 更新時間: 2022-05-21 編程語言

功能需求:為軟件設定一個使用有效期,當超過指定時間后,程序無法運行。

實現思路:定義一個常量,用于記錄一個時間,我們稱之為標記時間,使用當前時間減去標記時間,如果時間間隔大于設定的有效期,退出程序。

具體步驟:

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}");
        }
}

原文鏈接:https://blog.csdn.net/qq_42139931/article/details/123555866

欄目分類
最近更新