在一致的某个日期时间之后顶部如何到期

时间:2018-01-29 09:43:56

标签: c# unity3d

我正在开发Unity build(exe)并试图实现这样一种算法,该算法在一定时间后(例如,一周或一个月后)使我的播放器到期。这是完整的测试代码,有一个小问题(实际上很大):

public class LocalLimitedDaysLicense : MonoBehaviour
{

    float numberOfDays = 3;
    public string currentDate;
    bool isShowExpiryMessage;

    void Awake()
    {
        string playerPrefKeyName = "PlayerStartDateKey";

        currentDate = DateTime.Now.ToString();

        string playerStartDate = PlayerPrefs.GetString(playerPrefKeyName, "");

        if (!PlayerPrefs.HasKey(playerPrefKeyName))
        {
            Debug.Log("Player Start Date Setting");
            PlayerPrefs.SetString(playerPrefKeyName, currentDate);
        }
        else
        {
            Debug.Log("Player Start Date already Set");
        }


        string playerPrefsSaveDate = PlayerPrefs.GetString(playerPrefKeyName);

        DateTime today = DateTime.Now;




        DateTime playerFirstActiveDate = Convert.ToDateTime(PlayerPrefs.GetString(playerPrefKeyName));
        DateTime playerLimitDate = playerFirstActiveDate.AddDays(numberOfDays);


        if (DateTime.Compare(today, playerLimitDate) > 0)//confirm that 
        {
            Time.timeScale = 0;
            isShowExpiryMessage = true;
        }

        if (DateTime.Compare(today, playerFirstActiveDate) < 0)//Confirm that user didn't change the date of system
        {
            Time.timeScale = 0;
            isShowExpiryMessage = true;
        }
    }

    void OnGUI()
    {
        if (isShowExpiryMessage)
        {
            GUI.Label(new Rect((Screen.width / 2) - 100, Screen.height / 2, 300, 100), "Sorry the exe has expired.!");
        }
    }
}

如果在构建中经过了某些日子,它确实会暂停程序,但问题是,如果用户删除了旧版本并再次安装了构建版本,那么它将再次允许三天。

2 个答案:

答案 0 :(得分:1)

1.创建一个将日期注册到服务器数据库的Web API。

2.创建另一个API,根据您的玩家到期逻辑返回true或false,并在每次游戏开始时触发API。

答案 1 :(得分:1)

不可能仅从客户端控制它。

顺便说一下,检查逻辑还有另一个更简单的缺陷:用户可以简单地更改其机器上的日期。

请勿尝试仅通过信任来自客户端的信息来强制执行安全功能。特别是可以在服务器端查看的东西。

正如Reezoo Bose所建议的那样,您应该实现一些服务器端检查。

如果您想要防止黑客入侵这种保护,您还应该使用正确的身份验证和邮件签名来保护通信。当然,这取决于您愿意保护您的软件的“技术级”用户。