Unity 防沉迷逻辑

下面两个类放到项目中,实现IAntiAddictedServices接口就能用
1.AntiAddictedController .cs

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

namespace Achonor.AntiAddicted
{
   
    public class AntiAddictedController : MonoBehaviour
    {
   
        public static AntiAddictedController Instance = null;

        private IAntiAddictedServices _antiAddictedServices;

        private DateTime _birthTime = DateTime.MinValue;

        private DateTime _lastCheckHolidayTime = DateTime.MinValue;
        private bool _isHolidayChecking = false;
        private bool _isHoliday = false;

        private DateTime _startGameTime;

        private float _onlineCheckInterval = 0;

        private const string PLAYER_IDCARD = "Player_IDCard";

        private const string PLAYER_NAME = "Player_Name";

        private const string PLAYER_BIRTH = "Player_Birth";

        private const string PLAYER_ONLINE_DURATION = "Player_Online_Duration";

        private const string PLAYER_TODAY_ONLINE_DURATION = "Player_Today_Online_Duration";

        private const string PLAYER_LAST_ONLINE_DATE = "Player_Last_Online_Date";

        private const float ONlINECHECKINTERVAL = 60;

        private string PlayerIDCard {
   
            get {
   
                return PlayerPrefs.GetString(PLAYER_IDCARD);
            }
        }

        private string PlayerName {
   
            get {
   
                return PlayerPrefs.GetString(PLAYER_NAME);
            }
        }

        private int  PlayerAge {
   
            get {
   
                if (DateTime.MinValue == _birthTime) {
   
                    string birthStr = PlayerPrefs.GetString(PLAYER_BIRTH);
                    if (string.IsNullOrEmpty(birthStr)) {
   
                        return -1;
                    }
                    DateTime birthTime = new DateTime();
                    if (!DateTime.TryParse(birthStr, out birthTime)) {
   
                        return -1;
                    }
                    _birthTime = birthTime;
                }
                int year = DateTime.Now.Year - _birthTime.Year;
                if (DateTime.Now < _birthTime.AddYears(year)) {
   
                    return year - 1;
                }
                return year;
            }
        }

        private bool IsHoliday{
   
            get {
   
                if (DateTime.MinValue == _lastCheckHolidayTime) {
   
                    if (!_isHolidayChecking) {
   
                        StartCoroutine(RequestHoliday());
                    }
                    return false;
                }
                if (!DateTime.Now.Date.Equals(_lastCheckHolidayTime.Date)) {
   
                    //重新检测
                    StartCoroutine(RequestHoliday());
                }
                return _isHoliday;
            }
        }

        private float UnderageDurationMax {
   
            get {
   
                return _isHoliday ? 10800 : 5400;
            }
        }

        private void Awake() {
   
            Instance = this;
            DontDestroyOnLoad(this);
        }

        private void Start() {
   
            _onlineCheckInterval = 0;
            _startGameTime = DateTime.Now;
            StartCoroutine(RequestHolid
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

achonor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值