前言:在做一些项目的时候,有些不良甲方在给完项目后会有不给尾款的情况。之前都是加一些水印啥的,感觉不是很方便,第一不美观,第二如果甲方给完尾款后还得重新打包去水印。然后又做过一个本地的时间锁,等到时间,程序直接退出。但是感觉还是不方便,有时候甲方明知道有时间锁,还是拖欠着尾款,你是给去时间锁还是不给去?有一次甲方就是不给尾款,重新打包了好多次。。。。。。
后来自己做了一个带后台的时间锁,所以这个方法是**程序运行的环境必须带网络————重点,如果程序不带网络不用看下文了**。
好了,下面给出具体代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class JsonDatas
{
public List<lockData> lockDatas;
}
[System.Serializable]
public class lockData
{
public string name;
public int year;
public int mouth;
public int day;
}
public class TimeLock : MonoBehaviour
{
int yearNow;
int mouthNow;
int dayNow;
public string LocalName;
// Start is called before the first frame update
void Start()
{
}
private void Update()
{
if (dayNow != System.DateTime.Now.Day || mouthNow != System.DateTime.Now.Month || yearNow != System.DateTime.Now.Year)
{
dayNow = System.DateTime.Now.Day;
mouthNow = System.DateTime.Now.Month;
yearNow = System.DateTime.Now.Year;
StartCoroutine(IeGetData());
}
}
IEnumerator IeGetData()
{
WWW www = new WWW("https://qcftimelock.oss-cn-shanghai.aliyuncs.com/TimeLock.txt");
yield return www;
if (www.error == "" || www.error == null)
{
Debug.Log(www.text);
JsonDatas lockData = JsonUtility.FromJson<JsonDatas>(www.text);
if (lockData == null)
{
Debug.Log("没数据");
yield break;
}
for (int i = 0; i < lockData.lockDatas.Count; i++)
{
if (lockData.lockDatas[i].name == LocalName)
{
if (yearNow > lockData.lockDatas[i].year)
{
Debug.Log("超过");
Application.Quit();
}
else if (yearNow == lockData.lockDatas[i].year && mouthNow > lockData.lockDatas[i].mouth)
{
Application.Quit();
Debug.Log("超过");
}
else if (yearNow == lockData.lockDatas[i].year && mouthNow == lockData.lockDatas[i].mouth && dayNow > lockData.lockDatas[i].day)
{
Application.Quit();
Debug.Log("超过");
}
else
{
Debug.Log("时间范围内");
}
}
}
Debug.Log("没有问题");
}
}
}
代码随便挂上一个物体,在Local Name里面填写你的项目名称
当然这个需要后台的,你可以自己弄一个oss,然后把文件链接在代码里面替换下