using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Threading.Tasks; using Newtonsoft.Json; using UnityEngine.UI; /*public class selectQueryKill : MonoBehaviour { public string token = null; // 保存最新的 token,初始为 null public int escapeId = -1; // 保存最新的 escapeId,初始为 -1 表示未设置 void Start() { // 注册监听事件,当收到 token 时,触发 HandleTokenReceived LoginAndGetToken.OnTokenReceived += HandleTokenReceived; // 注册监听,当 escapeId 更新时调用 HandleGameEscapeIdUpdated,但不执行其他方法 selectGameEscape512.OnGameEscapeIdUpdated += HandleGameEscapeIdUpdated; } // 当接收到 token 时触发此方法,仅保存 token public void HandleTokenReceived(string receivedToken) { token = receivedToken; // 保存最新的 token // 首次调用加载初始数据 LoadInitialData(); //LoadGameEscapeData(); //Debug.Log("接收到新的 token: " + token); } // 当游戏逃亡 ID 更新时触发此方法,仅保存最新的 escapeId public async void HandleGameEscapeIdUpdated(int newGameEscapeId) { escapeId = newGameEscapeId; // 保存最新的 escapeId await QueryKill();//==================================================================================放在这里仅因为懒得写触发条件,可以放在任何地方,比如input.GetKeyDown.....必须改 // Debug.Log("接收到新的 GameEscapeId: " + escapeId); } // 加载初始数据,使用最新的 token public async void LoadInitialData() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法加载初始数据,token 未设置。"); return; } await QueryKill(); } // 加载游戏逃亡数据,使用最新的 escapeId 和 token public async void selectQueryKill1() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法加载游戏逃亡数据,token 未设置。"); return; } if (escapeId == -1) { Debug.LogWarning("无法加载游戏逃亡数据,escapeId 未设置。"); return; } // 查询击杀数据 await QueryKill();//================================================================================================================================= } //=============================================================================================================================================================================================================================== // 查询击杀信息 public async Task QueryKill() { var headers = CreateHeaders(); string body = $@" {{ ""userId"": 106, ""escapeId"": {escapeId} }}"; string response = await web.SendRequest("http://121.40.42.41:8080/snail/gameEscape/queryKill", "POST", body, headers); Debug.Log("查询击杀信息响应: " + response); } //=============================================================================================================================================================================================================================== // 创建请求头,使用最新的 token public Dictionary CreateHeaders() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("尝试创建请求头时,token 未设置。"); return new Dictionary(); } return new Dictionary { { "Authorization", token } }; } void OnDestroy() { // 注销监听事件,避免内存泄漏 LoginAndGetToken.OnTokenReceived -= HandleTokenReceived; selectGameEscape512.OnGameEscapeIdUpdated -= HandleGameEscapeIdUpdated; } }*/ public class SelectQueryKill : MonoBehaviour { public string token = null; // 保存最新的 token,初始为 null public int escapeId = -1; // 保存最新的 escapeId,初始为 -1 表示未设置 private string lastQueryKillResponse = null; // 保存最新的击杀信息查询响应 // 假设有一个手动查询击杀信息的按钮======================================================================================= public Button queryKillButton; void Start() { // 注册监听事件,当收到 token 时,触发 HandleTokenReceived LoginAndGetToken.OnTokenReceived += HandleTokenReceived; // 注册监听,当 escapeId 更新时调用 HandleGameEscapeIdUpdated selectGameEscape512.OnGameEscapeIdUpdated += HandleGameEscapeIdUpdated; // 假设按钮被点击时调用 OnQueryKillButtonClicked====================================================================== if (queryKillButton != null) { queryKillButton.onClick.AddListener(OnQueryKillButtonClicked); } } // 当接收到 token 时触发此方法,仅保存 token public void HandleTokenReceived(string receivedToken) { token = receivedToken; // 保存最新的 token Debug.Log("接收到新的 token: " + token); // 首次调用加载初始数据 LoadInitialData(); } // 当游戏逃亡 ID 更新时触发此方法,仅保存最新的 escapeId public async void HandleGameEscapeIdUpdated(int newGameEscapeId) { escapeId = newGameEscapeId; // 保存最新的 escapeId Debug.Log("接收到新的 GameEscapeId: " + escapeId); // 在接收到 escapeId 更新时自动调用查询击杀信息 lastQueryKillResponse = await QueryKill(); Debug.Log("HandleGameEscapeIdUpdated 处理的查询击杀信息响应: " + lastQueryKillResponse); } // 加载初始数据,使用最新的 token public async void LoadInitialData() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法加载初始数据,token 未设置。"); return; } // 调用查询击杀信息方法 lastQueryKillResponse = await QueryKill(); Debug.Log("初始加载的查询击杀信息响应: " + lastQueryKillResponse); } // 按钮点击后触发击杀信息查询操作 public async void OnQueryKillButtonClicked() { // 检查 token 和 escapeId 是否已正确设置 if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法查询击杀信息,token 未设置。"); return; } if (escapeId == -1) { Debug.LogWarning("无法查询击杀信息,escapeId 未设置。"); return; } // 调用查询击杀信息方法 lastQueryKillResponse = await QueryKill(); Debug.Log("用户按钮触发的查询击杀信息响应: " + lastQueryKillResponse); // 根据响应做进一步的处理 HandleQueryKillResponse(lastQueryKillResponse); } // 查询击杀信息 public async Task QueryKill() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法查询击杀信息,token 未设置。"); return null; } if (escapeId == -1) { Debug.LogWarning("无法查询击杀信息,escapeId 未设置。"); return null; } var headers = CreateHeaders(); string body = $@" {{ ""userId"": 106, ""escapeId"": {escapeId} }}"; Debug.Log("正在查询击杀信息..."); string response = await web.SendRequest("http://121.40.42.41:8080/snail/gameEscape/queryKill", "POST", body, headers); Debug.Log("查询击杀信息响应: " + response); return response; // 返回响应 } // 创建请求头,使用最新的 token public Dictionary CreateHeaders() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("尝试创建请求头时,token 未设置。"); return new Dictionary(); } return new Dictionary { { "Authorization", token } }; } // 处理 QueryKill 方法的响应 private void HandleQueryKillResponse(string response) { if (response.Contains("success")) { Debug.Log("查询击杀信息成功!"); } else { Debug.LogWarning("查询击杀信息失败,服务器响应: " + response); } } void OnDestroy() { // 注销监听事件,避免内存泄漏 LoginAndGetToken.OnTokenReceived -= HandleTokenReceived; selectGameEscape512.OnGameEscapeIdUpdated -= HandleGameEscapeIdUpdated; // 取消按钮的点击监听================================================================================================= if (queryKillButton != null) { queryKillButton.onClick.RemoveListener(OnQueryKillButtonClicked); } } }