public static CTestAccountMainData LoadAccountMainData()
    {
        string str = PlayerPrefs.GetString(CTestAccountMainKey);

        if (string.IsNullOrEmpty(str))
        {
            return(new CTestAccountMainData("CTest"));
        }

        CTestAccountSaveData saveData = JsonUtility.FromJson <CTestAccountSaveData>(str);

        CTestAccountMainData mainData = new CTestAccountMainData(saveData.accountName);

        string[] dataStrList = saveData.accountDataStr.Split(new char[] { '|' });

        for (int i = 0; i < dataStrList.Length; i++)
        {
            CTestAccountData data = JsonUtility.FromJson <CTestAccountData>(dataStrList[i]);
            if (data != null)
            {
                mainData.accountDataList.Add(data);
            }
        }

        return(mainData);
    }
    /// <summary>
    /// 获取账号
    /// </summary>
    /// <param name="accountName"></param>
    /// <param name="accountData"></param>
    /// <returns></returns>
    public static string GetAccountStrByData(string accountName, CTestAccountData accountData)
    {
        if (accountData == null)
        {
            return("");
        }
        DateTime dateTime   = GetSystemTimeFromStamp(accountData.registTime);
        string   accountStr = accountName + "_" + dateTime.Month + "_" + dateTime.Day + "_" + accountData.index;;

        return(accountStr);
    }
    /// <summary>
    /// 获取并复制最后使用账号
    /// </summary>
    public static void CopyLastLoginAccount()
    {
        CTestAccountMainData accountMainData = LoadAccountMainData();

        CTestAccountData accountData = GetLastLoginAccount(accountMainData);

        if (accountData != null)
        {
            accountData.lastLoginTime = GetCurrentTimeStamp();
            SaveAccountMainData(accountMainData);
        }

        CopyAccount(accountMainData.accountName, accountData);
    }
    /// <summary>
    /// 复制账号
    /// </summary>
    /// <param name="accountName"></param>
    /// <param name="accountData"></param>
    public static void CopyAccount(string accountName, CTestAccountData accountData)
    {
        if (accountData == null)
        {
            return;
        }
        string     accountStr = GetAccountStrByData(accountName, accountData);
        TextEditor t          = new TextEditor();

        t.text = accountStr;
        t.OnFocus();
        t.Copy();
        Debug.Log("已复制账号:" + accountStr);
    }
    /// <summary>
    /// 注册新账号
    /// </summary>
    public static void RegistNewAccount()
    {
        CTestAccountMainData accountmainData = LoadAccountMainData();

        ClearOldAccount(accountmainData);

        int currentStampTime = GetCurrentTimeStamp();

        CTestAccountData accountData = new CTestAccountData(GetNewAccountIndex(accountmainData), currentStampTime, currentStampTime);

        accountmainData.accountDataList.Add(accountData);

        SaveAccountMainData(accountmainData);

        CopyAccount(accountmainData.accountName, accountData);
    }
    /// <summary>
    /// 获取新账号index
    /// </summary>
    /// <param name="mainData"></param>
    /// <returns></returns>
    private static int GetNewAccountIndex(CTestAccountMainData mainData)
    {
        CTestAccountData lastAccount = GetLastLoginAccount(mainData);

        if (lastAccount == null)
        {
            return(1);
        }

        DateTime lastDateTime = GetSystemTimeFromStamp(lastAccount.registTime);

        if (lastDateTime.Year == DateTime.UtcNow.Year && lastDateTime.Month == DateTime.UtcNow.Month && lastDateTime.Day == DateTime.UtcNow.Day)
        {
            return(lastAccount.index + 1);
        }
        else
        {
            return(1);
        }
    }
    /// <summary>
    /// 获取最后使用账号
    /// </summary>
    /// <returns></returns>
    private static CTestAccountData GetLastLoginAccount(CTestAccountMainData accountMainData)
    {
        if (accountMainData == null)
        {
            return(null);
        }

        if (accountMainData.accountDataList == null || accountMainData.accountDataList.Count == 0)
        {
            return(null);
        }

        CTestAccountData accountData = accountMainData.accountDataList[0];

        accountMainData.accountDataList.ForEach(x =>
        {
            //不能改成大于 防止同一秒点击多次
            if (x.lastLoginTime >= accountData.lastLoginTime)
            {
                accountData = x;
            }
        });
        return(accountData);
    }