下面两个类放到项目中,实现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