// *********************************************************************** // Assembly : Game // Author : Kimch // Created : 2021-07-16 // Description : // Last Modified By : // Last Modified On : // *********************************************************************** // // // *********************************************************************** //#define GM_TEST_SERVER using F; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; namespace G { /// /// GM界面 /// public class KGMWindow : KUIWidget { #if UNITY_EDITOR static System.Tuple> _CopyInfo; class ArchiveWidget : KUIWidget { [KUIFlag] Text _txtName; [KUIFlag] Text _txtContent; [KUIFlag] Button _btnLoad; [KUIFlag] Button _btnCopy; public override void Refresh() { if (this.data is System.Tuple> info) { var archive = info.Item2; _txtName.text = archive.GetString("name"); _txtContent.text = archive.GetString("data"); } } private void OnLoadBtnClick() { if (this.data is System.Tuple> info) { var archiveInfo = info.Item1; var archive = info.Item2; ArchiveProxy.Instance.LoadServerText(archiveInfo, archive.GetString("data")); } } void OnCopyBtnClick() { if (this.data is System.Tuple> info) { _CopyInfo = info; } } private void Awake() { SetViewData(); _btnLoad.onClick.AddListener(this.OnLoadBtnClick); _btnCopy.onClick.AddListener(this.OnCopyBtnClick); } } class RankingWidget : KUIWidget { [KUIFlag] Text _txtName; [KUIFlag] Text _txtScore; [KUIFlag] Button _btnQuery; private string _uid; public override void Refresh() { if (this.data is IDictionary info) { _uid = info.GetString("uid"); _txtScore.text = info.GetString("score"); var rankingInfo = new RankingProxy.RankingInfo { userKey = info.GetString("user_key") }; _txtName.text = rankingInfo.name; } else _uid = null; } void OnQueryBtnClick() { if (!string.IsNullOrEmpty(_uid)) { _Instance.SetAccount(_uid, true); } } private void Awake() { SetViewData(); _btnQuery.onClick.AddListener(this.OnQueryBtnClick); } } #region Field #pragma warning disable CS0649 // 从未对字段赋值,字段将一直保持其默认值 null [KUIFlag] GameObject _goLogin; [KUIFlag] Button _btnGMLogin; [KUIFlag] InputField _inGMToken; [KUIFlag] Toggle _tgServer; [KUIFlag] GameObject _goManger; [KUIFlag] KUIToggleGroup _goPages; #region Account [KUIFlag] GameObject _goAccount; [KUIFlag] InputField _inPlayer; [KUIFlag] Button _btnQuery; [KUIFlag] KUIList __listArchives; [KUIFlag] Text _txtStatus; [KUIFlag] Text _txtToken; [KUIFlag] Button _btnUpload; [KUIFlag] Button _btnUploadCopy; [KUIFlag] Button _btnClear; [KUIFlag] Button _btnBlock; [KUIFlag] Button _btnUnblock; [KUIFlag] Toggle _tgUID; [KUIFlag] Text _txtUserInfo; [KUIFlag] Button _btnGod; [KUIFlag] Button _btnUngod; #endregion #region Mail [KUIFlag] GameObject _goMail; [KUIFlag] InputField _inMailTitle; [KUIFlag] InputField _inMailContent; [KUIFlag] InputField _inMailRewards; [KUIFlag] InputField _inMailId; [KUIFlag] Button _btnMailSend; #endregion #region Ranking [KUIFlag] GameObject _goRanking; [KUIFlag] KUIList __listRanking; [KUIFlag] Button _btnPullRanking; [KUIFlag] Button _btnDelRanking; [KUIFlag] Dropdown _ddRankingId; #endregion #pragma warning restore CS0649 // 从未对字段赋值,字段将一直保持其默认值 null private string _userInfo; private bool _loginSuccess => !string.IsNullOrEmpty(gmToken); private object _rankingData; #endregion #region Method public override void Refresh() { _goLogin.SetActive(!_loginSuccess); _goManger.SetActive(_loginSuccess); } void ShowLogin() { _inGMToken.text = gmToken; _goLogin.SetActive(true); _goManger.SetActive(false); } void SetAccount(string account, bool isUID) { _goPages.toggles[0].isOn = true; _inPlayer.text = account; _tgUID.isOn = isUID; } int GetRankId() { int rank_id = 0; switch (_ddRankingId.value) { case 0: rank_id = 1; break; case 1: rank_id = 2; break; case 2: rank_id = 3; break; case 3: rank_id = 101; break; case 4: rank_id = 102; break; case 5: rank_id = 103; break; case 6: rank_id = 105; break; case 7: rank_id = 5; break; case 8: rank_id = 201; break; case 9: rank_id = 202; break; case 10: rank_id = 203; break; case 11: rank_id = 205; break; } return rank_id; } void OnLoginBtnClick() { var token = _inGMToken.text; if (!string.IsNullOrEmpty(token)) { this.gmToken = token; Refresh(); } else { if (_tgServer.isOn) Application.OpenURL("https://dev-cdn-shaoxia.lanfeitech.com/gm/dev/index.html"); else Application.OpenURL("https://dev-cdn-shaoxia.lanfeitech.com/gm/prod/index.html"); Debug.Log($"输入GMToken {(_tgServer.isOn ? "测试服" : "正式服")}"); } } void OnQueryBtnClick() { var account = _inPlayer.text; if (!string.IsNullOrEmpty(account)) { QueryArchive(OnQueryArchive); QueryBanInfo(OnQueryBanInfo); _txtStatus.text = "查询存档"; } } void OnQueryArchive(int error, string message, object data) { if (error == 0) { if (data is IList archives) { if (archives.Count > 0) { var archive0 = archives[0] as IDictionary; var archiveInfo = new ArchiveProxy.ArchiveInfo(); archiveInfo.FromString(archive0.GetString("data")); } ArchiveProxy.ArchiveInfo archiveInfo1 = null; ArchiveProxy.ArchiveInfo archiveInfo2 = null; IDictionary archive1 = null; IDictionary archive2 = null; for (int i = 0; i < archives.Count; i++) { var archiveI = archives[i] as IDictionary; switch (archiveI.GetString("name")) { case "archive_info": archiveInfo1 = new ArchiveProxy.ArchiveInfo(); archiveInfo1.FromString(archiveI.GetString("data")); string infoText = $"名字:{archiveInfo1.playerName}\n" + $"时间:{F.Utils.Time.ToDataTime(archiveInfo1.timestamp).ToLocalTime().ToString()}\n" + $"等级:{archiveInfo1.playerGrade}\n" + $"进度:{archiveInfo1.completedLevel}"; _txtToken.text = infoText; break; case "archive2_info": archiveInfo2 = new ArchiveProxy.ArchiveInfo(); archiveInfo2.FromString(archiveI.GetString("data")); break; case "archive": archive1 = archiveI; break; case "archive2": archive2 = archiveI; break; case "user_info": _userInfo = archiveI.GetString("data"); _txtUserInfo.text = _userInfo; break; default: break; } } __listArchives.Clear(); if (archiveInfo1 != null && archive1 != null) { __listArchives.GetItem().SetData(new System.Tuple>(archiveInfo1, archive1)); } if (archiveInfo2 != null && archive2 != null) { __listArchives.GetItem().SetData(new System.Tuple>(archiveInfo2, archive2)); } } _txtStatus.text = "查询结束"; } else { gmToken = ""; Refresh(); } } void OnQueryBanInfo(int error, string message) { _userInfo = message; _txtUserInfo.text = _userInfo; } void OnUploadBtnClick() { var account = _inPlayer.text; if (!string.IsNullOrEmpty(account)) { UploadArchive((error, message) => { if (error == 0) { _txtStatus.text = "上传存档成功"; } else { _txtStatus.text = message; } }); _txtStatus.text = "上传存档"; } } void OnUploadCopyBtnClick() { var account = _inPlayer.text; if (!string.IsNullOrEmpty(account)) { UploadCopyArchive((error, message) => { if (error == 0) { _txtStatus.text = "上传存档成功"; } else { _txtStatus.text = message; } }); _txtStatus.text = "上传存档"; } } void OnBlockBtnClick() { var account = _inPlayer.text; if (!string.IsNullOrEmpty(account)) { BlockArchive((error, message) => { if (error == 0) { _txtStatus.text = "封禁帐号成功"; } else { _txtStatus.text = message; } }); _txtStatus.text = "封禁帐号"; } } void OnUnblockBtnClick() { var account = _inPlayer.text; if (!string.IsNullOrEmpty(account)) { UnblockArchive((error, message) => { if (error == 0) { _txtStatus.text = "解禁帐号成功"; } else { _txtStatus.text = message; } }); _txtStatus.text = "解禁帐号"; } } void OnClearBtnClick() { var account = _inPlayer.text; if (!string.IsNullOrEmpty(account)) { ClearArchive((int error, string message) => { if (error == 0) { _txtStatus.text = "清除帐号成功"; } else { _txtStatus.text = message; } }); _txtStatus.text = "清除帐号"; } } void OnGodRankBtnClick() { var account = _inPlayer.text; if (!string.IsNullOrEmpty(account)) { UploadGodState(false, (error, message) => { if (error == 0) { _txtStatus.text = "加入封神榜成功"; } else { _txtStatus.text = message; } }); _txtStatus.text = "加入封神榜"; } } void OnUngodBtnClick() { var account = _inPlayer.text; if (!string.IsNullOrEmpty(account)) { UploadGodState(true, (error, message) => { if (error == 0) { _txtStatus.text = "解除封神榜成功"; } else { _txtStatus.text = message; } }); _txtStatus.text = "解除封神榜"; } } void OnMailSendBtnClick() { var account = _inPlayer.text; if (!string.IsNullOrEmpty(account)) { if (string.IsNullOrEmpty(_inMailId.text)) { SendMail(_inMailTitle.text, _inMailContent.text, _inMailRewards.text, OnSendMail); } else { int.TryParse(_inMailId.text, out int mailId); var mailItem = ItemProxy.Instance.GetStaticItem(mailId); if (mailItem != null) { SendMail(mailItem.title, mailItem.content, mailItem.rewardText, OnSendMail); } } _txtStatus.text = "发送邮件"; } } void OnSendMail(int error, string message) { if (error != 0) { Debug.Log(message); } } void OnPullRankingBtnClick() { var rank_id = GetRankId(); if (rank_id > 0) { PullRanking(rank_id, OnPullRanking); _txtStatus.text = $"拉取排行 {rank_id}"; } } void OnPullRanking(int error, string message, object data) { if (error == 0) { _rankingData = data; IList rankDataList = data as IList; __listRanking.Clear(); foreach (var rankData in rankDataList) { __listRanking.GetItem().SetData(rankData); } } else { _txtStatus.text = message; } } private void OnDelRankingBtnClick() { var account = _inPlayer.text; if (!string.IsNullOrEmpty(account)) { var rank_id = GetRankId(); if (rank_id > 0) { DeleteRanking(rank_id, OnDelRanking); _txtStatus.text = $"删除排行 {rank_id}"; } } } private void OnDelRanking(int error, string message) { } void OnPageSelected(int index) { if (index == 0) { _goAccount.SetActive(true); _goMail.SetActive(false); _goRanking.SetActive(false); } else if (index == 1) { _goAccount.SetActive(false); _goMail.SetActive(true); _goRanking.SetActive(false); } else if (index == 2) { _goAccount.SetActive(false); _goMail.SetActive(false); _goRanking.SetActive(true); } } public void OnCloseBtnClick() { this.gameObject.SetActive(!this.gameObject.activeSelf); } #endregion #region Net /// /// 查询存档 /// /// /// void QueryArchive(Callback3 callback) { var jsonData = GetCommonData(); jsonData.Add("tb_names", new string[] { "user_info", "archive_info", "archive", "archive2" }); var body = F.Utils.ToJsonText(jsonData); void process(int error, object data) { if (error == 0) { var table = F.Utils.ToJsonTable((byte[])data); int errorCode = table.GetInt("code"); if (errorCode == 0) { var dataT = table.GetDictionary("data"); var archives = dataT.GetList("archives"); callback?.Invoke(0, "", archives); } else { string errorMsg = table.GetString("msg"); callback?.Invoke(errorCode, errorMsg, null); OnServerError(errorCode, errorMsg); } } else { callback?.Invoke(error, data?.ToString(), null); OnNetworkError(error, data?.ToString()); } }; StartCoroutine(Request("/gm/gm/get_archive", body, process)); } /// /// 更新存档 /// /// /// void UploadArchive(Callback2 callback = null) { var jsonData = GetCommonData(); string mainData = ArchiveProxy.Instance.GetUploadText(); string infoData = ArchiveProxy.Instance.GetUploadInfo(); // jsonData.Add("archives", new List { new Dictionary { { "name", "archive" }, { "data",mainData} }, new Dictionary { { "name", "archive_info" }, { "data",infoData} } }); var body = F.Utils.ToJsonText(jsonData); void process(int error, object data) { if (error == 0) { var table = F.Utils.ToJsonTable((byte[])data); int errorCode = table.GetInt("code"); if (errorCode == 0) { Debug.Log("上传存档"); callback?.Invoke(0, null); } else { string errorMsg = table.GetString("msg"); callback?.Invoke(errorCode, errorMsg); OnServerError(errorCode, errorMsg); } } else { callback?.Invoke(error, data?.ToString()); OnNetworkError(error, data?.ToString()); } } StartCoroutine(Request("/gm/gm/update_archive", body, process)); } void UploadCopyArchive(Callback2 callback = null) { if (_CopyInfo == null) return; var jsonData = GetCommonData(); string mainData = _CopyInfo.Item2.GetString("data");// ArchiveProxy.Instance.GetUploadText(); string infoData = _CopyInfo.Item1.ToString(); // jsonData.Add("archives", new List { new Dictionary { { "name", "archive" }, { "data",mainData} }, new Dictionary { { "name", "archive_info" }, { "data",infoData} } }); var body = F.Utils.ToJsonText(jsonData); void process(int error, object data) { if (error == 0) { var table = F.Utils.ToJsonTable((byte[])data); int errorCode = table.GetInt("code"); if (errorCode == 0) { Debug.Log("上传存档"); callback?.Invoke(0, null); } else { string errorMsg = table.GetString("msg"); callback?.Invoke(errorCode, errorMsg); OnServerError(errorCode, errorMsg); } } else { callback?.Invoke(error, data?.ToString()); OnNetworkError(error, data?.ToString()); } } StartCoroutine(Request("/gm/gm/update_archive", body, process)); } /// /// /// /// /// void UploadGodState(bool clear, Callback2 callback = null) { var jsonData = GetCommonData(); string infoData = clear ? "" : "{\"god_rank\":true}"; // jsonData.Add("archives", new List { new Dictionary { { "name", "user_info" }, { "data",infoData} }, }); var body = F.Utils.ToJsonText(jsonData); void process(int error, object data) { if (error == 0) { var table = F.Utils.ToJsonTable((byte[])data); int errorCode = table.GetInt("code"); if (errorCode == 0) { Debug.Log("上传存档"); callback?.Invoke(0, null); } else { string errorMsg = table.GetString("msg"); callback?.Invoke(errorCode, errorMsg); OnServerError(errorCode, errorMsg); } } else { callback?.Invoke(error, data?.ToString()); OnNetworkError(error, data?.ToString()); } } StartCoroutine(Request("/gm/gm/update_archive", body, process)); } /// /// /// /// void ClearArchive(Callback2 callback = null) { var jsonData = GetCommonData(); var archiveInfo = new ArchiveProxy.ArchiveInfo(); string infoData = archiveInfo.ToString(); // jsonData.Add("archives", new List { new Dictionary { { "name", "user_info" }, { "data",""} }, new Dictionary { { "name", "archive" }, { "data",""} }, new Dictionary { { "name", "archive_info" }, { "data",infoData} } }); var body = F.Utils.ToJsonText(jsonData); void process(int error, object data) { if (error == 0) { var table = F.Utils.ToJsonTable((byte[])data); int errorCode = table.GetInt("code"); if (errorCode == 0) { //Debug.Log("清除存档"); callback?.Invoke(0, null); } else { string errorMsg = table.GetString("msg"); callback?.Invoke(errorCode, errorMsg); OnServerError(errorCode, errorMsg); } } else { callback?.Invoke(error, data?.ToString()); OnNetworkError(error, data?.ToString()); } } StartCoroutine(Request("/gm/gm/update_archive", body, process)); } /// /// /// /// void QueryBanInfo(Callback2 callback = null) { var jsonData = GetCommonData(); // var body = F.Utils.ToJsonText(jsonData); void process(int error, object data) { if (error == 0) { var table = F.Utils.ToJsonTable((byte[])data); int errorCode = table.GetInt("code"); if (errorCode == 0) { var ban_status = table.GetInt("ban_status") == 0 ? "正常" : "封号"; var ban_result = table.GetString("record"); var ban_open_time = table.GetInt("open_time"); var ban_count = table.GetInt("ban_count"); var result = $"status:{ban_status} time:{F.Utils.Time.ToDataTime(ban_open_time).ToShortDateString()} result:{ban_result}"; callback?.Invoke(0, result); } else { string errorMsg = table.GetString("msg"); callback?.Invoke(errorCode, errorMsg); OnServerError(errorCode, errorMsg); } } else { callback?.Invoke(error, data?.ToString()); OnNetworkError(error, data?.ToString()); } } StartCoroutine(Request("/gm/gm/query_ban", body, process)); } /// /// /// /// void BlockArchive(Callback2 callback = null) { var jsonData = GetCommonData(); jsonData.Add("record", "当前账号存在异常,若有疑问请联系官方 qq群:923503162"); jsonData.Add("open_time", 1672506061); _userInfo = "{\"ban\":1672506061,\"ban_text\":\"当前账号存在异常,若有疑问请联系官方 qq群:923503162\"}"; // var body = F.Utils.ToJsonText(jsonData); void process(int error, object data) { if (error == 0) { var table = F.Utils.ToJsonTable((byte[])data); int errorCode = table.GetInt("code"); if (errorCode == 0) { Debug.Log("封禁帐号"); callback?.Invoke(0, null); } else { string errorMsg = table.GetString("msg"); callback?.Invoke(errorCode, errorMsg); OnServerError(errorCode, errorMsg); } } else { callback?.Invoke(error, data?.ToString()); OnNetworkError(error, data?.ToString()); } } StartCoroutine(Request("/gm/gm/ban", body, process)); } /// /// /// /// /// void UnblockArchive(Callback2 callback = null) { var jsonData = GetCommonData(); _userInfo = ""; // var body = F.Utils.ToJsonText(jsonData); void process(int error, object data) { if (error == 0) { var table = F.Utils.ToJsonTable((byte[])data); int errorCode = table.GetInt("code"); if (errorCode == 0) { Debug.Log("解禁帐号"); callback?.Invoke(0, null); } else { string errorMsg = table.GetString("msg"); callback?.Invoke(errorCode, errorMsg); OnServerError(errorCode, errorMsg); } } else { callback?.Invoke(error, data?.ToString()); OnNetworkError(error, data?.ToString()); } } StartCoroutine(Request("/gm/gm/relieve_ban", body, process)); } /// /// 查询存档 /// /// /// void SendMail(string title, string content, string rewards, Callback2 callback) { var jsonData = GetCommonData(); jsonData.Add("title", title); jsonData.Add("content", content); jsonData.Add("rewards", rewards); var body = F.Utils.ToJsonText(jsonData); void process(int error, object data) { if (error == 0) { var table = F.Utils.ToJsonTable((byte[])data); int errorCode = table.GetInt("code"); if (errorCode == 0) { callback?.Invoke(0, ""); } else { string errorMsg = table.GetString("msg"); callback?.Invoke(errorCode, errorMsg); OnServerError(errorCode, errorMsg); } } else { callback?.Invoke(error, data?.ToString()); OnNetworkError(error, data?.ToString()); } }; StartCoroutine(Request("/gm/gm/send_mail", body, process)); } /// /// uid string user_key string score /// /// /// void PullRanking(int rank_id, Callback3 callback) { var jsonData = GetCommonData(); jsonData.Add("rank_id", rank_id); var body = F.Utils.ToJsonText(jsonData); void process(int error, object data) { if (error == 0) { var table = F.Utils.ToJsonTable((byte[])data); int errorCode = table.GetInt("code"); if (errorCode == 0) { var dataT = table.GetDictionary("data"); var rankList = dataT.GetList("list"); callback?.Invoke(0, "", rankList); } else { string errorMsg = table.GetString("msg"); callback?.Invoke(errorCode, errorMsg, null); OnServerError(errorCode, errorMsg); } } else { callback?.Invoke(error, data?.ToString(), null); OnNetworkError(error, data?.ToString()); } }; StartCoroutine(Request("/gm/gm/load_rank", body, process)); } void UpdateRanking(int rank_id, Callback2 callback) { var jsonData = GetCommonData(); jsonData.Add("rank_id", rank_id); var body = F.Utils.ToJsonText(jsonData); void process(int error, object data) { if (error == 0) { var table = F.Utils.ToJsonTable((byte[])data); int errorCode = table.GetInt("code"); if (errorCode == 0) { callback?.Invoke(0, ""); } else { string errorMsg = table.GetString("msg"); callback?.Invoke(errorCode, errorMsg); OnServerError(errorCode, errorMsg); } } else { callback?.Invoke(error, data?.ToString()); OnNetworkError(error, data?.ToString()); } }; StartCoroutine(Request("/gm/gm/del_rank", body, process)); } /// /// /// /// /// void DeleteRanking(int rank_id, Callback2 callback) { var jsonData = GetCommonData(); jsonData.Add("rank_id", rank_id); var body = F.Utils.ToJsonText(jsonData); void process(int error, object data) { if (error == 0) { var table = F.Utils.ToJsonTable((byte[])data); int errorCode = table.GetInt("code"); if (errorCode == 0) { callback?.Invoke(0, ""); } else { string errorMsg = table.GetString("msg"); callback?.Invoke(errorCode, errorMsg); OnServerError(errorCode, errorMsg); } } else { callback?.Invoke(error, data?.ToString()); OnNetworkError(error, data?.ToString()); } }; StartCoroutine(Request("/gm/gm/del_rank", body, process)); } private void OnNetworkError(int error, string errorMsg) { } private void OnServerError(int error, string errorMsg) { Debug.Log("server error " + error + " " + errorMsg); if (error == 15002) { gmToken = ""; ShowLogin(); } } private string gmToken { get { return UnityEditor.EditorPrefs.GetString("gm_token"); } set { UnityEditor.EditorPrefs.SetString("gm_token", value); } } private readonly Dictionary _jsonData = new Dictionary(); /// /// /// /// private Dictionary GetCommonData() { _jsonData.Clear(); var account = _inPlayer.text; if (!string.IsNullOrEmpty(account)) { if (_tgUID.isOn) _jsonData.Add("uid", account); else _jsonData.Add("userid", account); } return _jsonData; } public static string GetSign(string body, string timestamp, bool testServer) { string raw_str; if (testServer) raw_str = F.Utils.Text.Format("appid=KHQiAUtB&body={0}&signkey=3c3c3aa984ccbbc791655fbf9f8e0fb1&time={1}&", body, timestamp); else raw_str = F.Utils.Text.Format("appid=KHQiAUtB&body={0}&signkey=8adb871756f5bdea6b3d57547fdec8d9&time={1}&", body, timestamp); return F.Utils.Security.GetMd5Hex(raw_str); } IEnumerator Request(string api, string body, System.Action callback) { string url = ""; if (_tgServer.isOn) url = "https://dev-shaoxia.lanfeitech.com" + api; else url = "https://prod-shaoxia.lanfeitech.com" + api; var webRequest = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST) { uploadHandler = new UploadHandlerRaw(System.Text.Encoding.UTF8.GetBytes(body)) { contentType = "application/json" }, downloadHandler = new DownloadHandlerBuffer() }; var timeStr = Launch.Timestamp.ToString(); webRequest.SetRequestHeader("sign", GetSign(body, timeStr, _tgServer.isOn)); webRequest.SetRequestHeader("time", timeStr); if (!string.IsNullOrEmpty(gmToken)) { webRequest.SetRequestHeader("authorization", gmToken); } #if UNITY_EDITOR Debug.Log(body); #endif yield return webRequest.SendWebRequest(); if (webRequest.isNetworkError || webRequest.isHttpError) { Debug.Log(webRequest.error); callback(1, webRequest.error); } else { #if UNITY_EDITOR Debug.Log(webRequest.downloadHandler.text); #endif callback(0, webRequest.downloadHandler.data); } } #endregion #region Unity static KGMWindow _Instance; // Use this for initialization private void Awake() { _Instance = this; SetViewData(); _goPages.onToggleSelected.AddListener(this.OnPageSelected); _btnGMLogin.onClick.AddListener(this.OnLoginBtnClick); _btnQuery.onClick.AddListener(this.OnQueryBtnClick); _btnUpload.onClick.AddListener(this.OnUploadBtnClick); _btnUploadCopy.onClick.AddListener(this.OnUploadCopyBtnClick); _btnBlock.onClick.AddListener(this.OnBlockBtnClick); _btnUnblock.onClick.AddListener(this.OnUnblockBtnClick); _btnClear.onClick.AddListener(this.OnClearBtnClick); _btnDelRanking.onClick.AddListener(this.OnDelRankingBtnClick); _btnPullRanking.onClick.AddListener(this.OnPullRankingBtnClick); _btnMailSend.onClick.AddListener(this.OnMailSendBtnClick); _btnGod.onClick.AddListener(this.OnGodRankBtnClick); _btnUngod.onClick.AddListener(this.OnUngodBtnClick); __listArchives.AddTemplate(true); __listRanking.AddTemplate(true); _inGMToken.text = this.gmToken; } private void OnEnable() { Refresh(); } // Update is called once per frame private void Update() { } #endregion #endif } }