Unity為軟件添加使用有效期的具體步驟
功能需求:為軟件設定一個使用有效期,當超過指定時間后,程序無法運行。
實現(xiàn)思路:定義一個常量,用于記錄一個時間,我們稱之為標記時間,使用當前時間減去標記時間,如果時間間隔大于設定的有效期,退出程序。
具體步驟:
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();
但是這樣這樣實現(xiàn)會有一個問題,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函數(shù)將字符串分割,獲取到等號后面的部分,再使用Substring函數(shù)截取‘’符號中間的部分即可:
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軟件使用有效期內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

