Unity实现根据日期锁定逻辑功能

Unity实现根据日期锁定逻辑功能

前言

在做我们项目的时候,或者是接一些外包私活的时候,都会遇到回款难的问题。遇到这种问题,除了死缠烂打,还有就是使用一定的技术,在我们程序中加入一些猫腻,也就是很据日期给程序添加锁定功能。当甲方客户不要碧莲的想白嫖的时候,忽然有一天程序不能用了,他如果想继续使用程序,就会白白的把回款打过来。这篇博客记录下Unity实现根据日期锁定逻辑的功能。

步骤

1.在StreamingAssets文件夹下添加Config.txt文件,添加配置文件功能(配置文件功能在之前的博客介绍过,在这里不赘述),配置文件里的两个参数是用日期转成的16进制数,转成16进制可以避免其他人随意改程序锁定日期。如配置文件内容下图所示:
在这里插入图片描述
2.编写LockTest.cs脚本,实现根据日期锁定程序功能的基本功能,代码如下所示:

sing System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LockTest : MonoBehaviour
{
    
    
    //限定最小时间字符串
    string minLockTime;
    //到期时间字符串
    string maxLockTime;
    //最小时间整形
    int minTime = 0;
    //到期时间整型
    int maxTime = 0;
    //配置文件管理类
    public ConfigTest configTest;
    //游戏管理类
    public ThisGameManager gameManager;

    // Use this for initialization
    void Start()
    {
    
    
        BeginString();
        StartCoroutine(ToLockThis());
    }

    /// <summary>
    /// 初始化数据
    /// </summary>
    void BeginString()
    {
    
    
        minLockTime = configTest.dic["激活码"]["min"];
        maxLockTime = configTest.dic["激活码"]["max"];
    }

    /// <summary>
    /// 根据日期锁定
    /// </summary>
    /// <returns></returns>
    IEnumerator ToLockThis()
    {
    
    
        yield return new WaitForSeconds(0.1f);
        ToChangeTen();
        yield return new WaitForSeconds(0.1f);
        BeginToLock();
    }

    /// <summary>
    /// 十六进制字符转换为十进制字符
    /// </summary>
    void ToChangeTen() 
    {
    
    
        minTime = Convert.ToInt32(minLockTime,16);
        maxTime = Convert.ToInt32(maxLockTime, 16);
    }

    /// <summary>
    /// 根据日期锁定游戏
    /// </summary>
    void BeginToLock()
    {
    
    
        int todayTime = int.Parse(System.DateTime.Now.ToString("yyyyMMdd"));
        if ((todayTime >= minTime) && (todayTime <= maxTime))
        {
    
    
            gameManager.CanSend = true;
        }
        else
        {
    
    
            gameManager.CanSend = false;
        }
    }
}

3.将该脚本挂载到场景中的lockTest物体上,将configTest赋值到该物体上,如下图所示:
在这里插入图片描述
4.编写ThisGameManager.cs脚本,编写调用锁定功能的方法,代码如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ThisGameManager : MonoBehaviour 
{
    
    
	//是否可以发生数据
	public bool CanSend = true;

	/// <summary>
	/// 发送数据
	/// </summary>
	public void ToSendThis() 
	{
    
    
		if (CanSend) 
		{
    
    
			Debug.Log("已触发!");
		}
	}
}

5.将该脚本挂载到场景中的物体上,将其赋值到lockTest物体上,如下图所示:

在这里插入图片描述
6.将ThisGameManager中的ToSendThis方法挂载到场景中的按钮上,如下图所示:
在这里插入图片描述
7.运行项目,连续点击按钮,发现打印控制台打印出了字符串,如下图所示:
在这里插入图片描述
8.将配置文件中的参数改为16进制的其他日期,如20201001~20201020的16进制参数,保存,如下图所示:
在这里插入图片描述
9.运行工程,点击按钮,发现程序打印字符串的功能已经被锁定了,因为日期不在区间内,如下图所示:
在这里插入图片描述

相关连接

项目链接
视频讲解

猜你喜欢

转载自blog.csdn.net/qq_17367039/article/details/110136646