using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Threading.Tasks; using Newtonsoft.Json; using UnityEngine.UI; /*public class QueryRoomdetails512 : MonoBehaviour { public string token = null; // 保存最新的 token,初始为 null public int escapeId = -1; // 保存最新的 escapeId,初始为 -1 表示未设置 void Start() { // 注册监听事件,当收到 token 时,触发 HandleTokenReceived LoginAndGetToken.OnTokenReceived += HandleTokenReceived; // 注册监听,当 escapeId 更新时调用 HandleGameEscapeIdUpdated,但不执行其他方法 selectLatest511.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 QueryEscapeRoomDetails();//=====================================================================放在这里仅因为懒得写触发条件,可以放在任何地方,比如input.GetKeyDown.....必须改掉,吃服务器 //Debug.Log("接收到新的 GameEscapeId: " + escapeId); } // 加载初始数据,使用最新的 token public async void LoadInitialData() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法加载初始数据,token 未设置。"); return; } await QueryEscapeRoomDetails();//=====================================================================放在此处只为解除一个黄色报错,看着闹心。但可以不要 } // 加载游戏逃亡数据,使用最新的 escapeId 和 token public async void selectQueryKill1() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法加载游戏逃亡数据,token 未设置。"); return; } if (escapeId == -1) { Debug.LogWarning("无法加载游戏逃亡数据,escapeId 未设置。"); return; } await QueryEscapeRoomDetails();//========================================================================================================================================================================== } //=============================================================================================================================================================================================================================== // 查询逃亡房间详情 public async Task QueryEscapeRoomDetails() { var headers = CreateHeaders(); string body = $@" {{ ""userId"": 106, ""escapeId"": {escapeId} }}"; string response = await web.SendRequest("http://121.40.42.41:8080/snail/LatestGame511/queryEscapeRoomList", "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; selectLatest511.OnGameEscapeIdUpdated -= HandleGameEscapeIdUpdated; } }*/ //字符串版 /*public class QueryRoomdetails512 : MonoBehaviour { public string token = null; // 保存最新的 token,初始为 null public int escapeId = -1; // 保存最新的 escapeId,初始为 -1 表示未设置 private string lastEscapeRoomResponse = null; // 保存最新的逃亡房间查询响应 // 假设有一个手动查询逃亡房间详情的按钮=================================================================================== public Button queryEscapeRoomButton; void Start() { // 注册监听事件,当收到 token 时,触发 HandleTokenReceived LoginAndGetToken.OnTokenReceived += HandleTokenReceived; // 注册监听,当 escapeId 更新时调用 HandleGameEscapeIdUpdated selectLatest511.OnGameEscapeIdUpdated += HandleGameEscapeIdUpdated; // 假设按钮被点击时调用 OnQueryEscapeRoomButtonClicked================================================================ if (queryEscapeRoomButton != null) { queryEscapeRoomButton.onClick.AddListener(OnQueryEscapeRoomButtonClicked); } } // 当接收到 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 更新时自动调用查询逃亡房间详情 lastEscapeRoomResponse = await QueryEscapeRoomDetails(); Debug.Log("HandleGameEscapeIdUpdated 处理的查询逃亡房间响应: " + lastEscapeRoomResponse); } // 加载初始数据,使用最新的 token public async void LoadInitialData() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法加载初始数据,token 未设置。"); return; } // 调用查询逃亡房间详情方法 lastEscapeRoomResponse = await QueryEscapeRoomDetails(); Debug.Log("初始加载的查询逃亡房间详情响应: " + lastEscapeRoomResponse); } // 按钮点击后触发逃亡房间详情查询操作 public async void OnQueryEscapeRoomButtonClicked() { // 检查 token 和 escapeId 是否已正确设置 if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法查询逃亡房间详情,token 未设置。"); return; } if (escapeId == -1) { Debug.LogWarning("无法查询逃亡房间详情,escapeId 未设置。"); return; } // 调用查询逃亡房间详情方法 lastEscapeRoomResponse = await QueryEscapeRoomDetails(); Debug.Log("用户按钮触发的查询逃亡房间详情响应: " + lastEscapeRoomResponse); // 根据响应做进一步的处理 HandleEscapeRoomResponse(lastEscapeRoomResponse); } // 查询逃亡房间详情 public async Task QueryEscapeRoomDetails() { 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/LatestGame511/queryEscapeRoomList", "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 } }; } // 处理 QueryEscapeRoomDetails 方法的响应 private void HandleEscapeRoomResponse(string response) { if (response.Contains("success")) { Debug.Log("查询逃亡房间详情成功!"); } else { Debug.LogWarning("查询逃亡房间详情失败,服务器响应: " + response); } } void OnDestroy() { // 注销监听事件,避免内存泄漏 LoginAndGetToken.OnTokenReceived -= HandleTokenReceived; selectLatest511.OnGameEscapeIdUpdated -= HandleGameEscapeIdUpdated; // 取消按钮的点击监听================================================================================================ if (queryEscapeRoomButton != null) { queryEscapeRoomButton.onClick.RemoveListener(OnQueryEscapeRoomButtonClicked); } } }*/ //解析版 /*public class QueryRoomdetails512 : MonoBehaviour { public string token = null; // 保存最新的 token,初始为 null public int escapeId = -1; // 保存最新的 escapeId,初始为 -1 表示未设置 private string lastEscapeRoomResponse = null; // 保存最新的逃亡房间查询响应 // 假设有一个手动查询逃亡房间详情的按钮 public Button queryEscapeRoomButton; void Start() { // 注册监听事件,当收到 token 时,触发 HandleTokenReceived LoginAndGetToken.OnTokenReceived += HandleTokenReceived; // 注册监听,当 escapeId 更新时调用 HandleGameEscapeIdUpdated selectLatest511.OnGameEscapeIdUpdated += HandleGameEscapeIdUpdated; // 假设按钮被点击时调用 OnQueryEscapeRoomButtonClicked if (queryEscapeRoomButton != null) { queryEscapeRoomButton.onClick.AddListener(OnQueryEscapeRoomButtonClicked); } } // 当接收到 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 更新时自动调用查询逃亡房间详情 lastEscapeRoomResponse = await QueryEscapeRoomDetails(); Debug.Log("HandleGameEscapeIdUpdated 处理的查询逃亡房间响应: " + lastEscapeRoomResponse); } // 加载初始数据,使用最新的 token public async void LoadInitialData() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法加载初始数据,token 未设置。"); return; } // 调用查询逃亡房间详情方法 lastEscapeRoomResponse = await QueryEscapeRoomDetails(); Debug.Log("初始加载的查询逃亡房间详情响应: " + lastEscapeRoomResponse); } // 按钮点击后触发逃亡房间详情查询操作 public async void OnQueryEscapeRoomButtonClicked() { // 检查 token 和 escapeId 是否已正确设置 if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法查询逃亡房间详情,token 未设置。"); return; } if (escapeId == -1) { Debug.LogWarning("无法查询逃亡房间详情,escapeId 未设置。"); return; } // 调用查询逃亡房间详情方法 lastEscapeRoomResponse = await QueryEscapeRoomDetails(); Debug.Log("用户按钮触发的查询逃亡房间详情响应: " + lastEscapeRoomResponse); // 根据响应做进一步的处理 HandleEscapeRoomResponse(lastEscapeRoomResponse); } // 查询逃亡房间详情 public async Task QueryEscapeRoomDetails() { 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/LatestGame511/queryEscapeRoomList", "POST", body, headers); Debug.Log("查询逃亡房间详情响应: " + response); // 反序列化 JSON 数据为 ServerResponse 对象 ServerResponse serverResponse = JsonConvert.DeserializeObject(response); if (serverResponse != null && serverResponse.code == 200) { // 保存反序列化后的房间详情数据 if (serverResponse.data != null && serverResponse.data.gameEscapeRoomResponseVoList != null) { foreach (var room in serverResponse.data.gameEscapeRoomResponseVoList) { Debug.Log($"Escape ID: {room.escapeId}, Room No: {room.roomNo}, Room Beans Coin: {room.roomBeansCoin}"); } } } else { Debug.LogWarning("解析失败或响应错误:" + response); } return response; // 返回响应 } // 创建请求头,使用最新的 token public Dictionary CreateHeaders() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("尝试创建请求头时,token 未设置。"); return new Dictionary(); } return new Dictionary { { "Authorization", token } }; } // 处理 QueryEscapeRoomDetails 方法的响应 private void HandleEscapeRoomResponse(string response) { ServerResponse serverResponse = JsonConvert.DeserializeObject(response); if (serverResponse != null && serverResponse.code == 200) { Debug.Log("查询逃亡房间详情成功!"); if (serverResponse.data != null && serverResponse.data.gameEscapeRoomResponseVoList != null) { foreach (var room in serverResponse.data.gameEscapeRoomResponseVoList) { Debug.Log($"Escape ID: {room.escapeId}, Room No: {room.roomNo}, Room Beans Coin: {room.roomBeansCoin}"); } } } else { Debug.LogWarning("查询逃亡房间详情失败,服务器响应: " + response); } } void OnDestroy() { // 注销监听事件,避免内存泄漏 LoginAndGetToken.OnTokenReceived -= HandleTokenReceived; selectLatest511.OnGameEscapeIdUpdated -= HandleGameEscapeIdUpdated; // 取消按钮的点击监听 if (queryEscapeRoomButton != null) { queryEscapeRoomButton.onClick.RemoveListener(OnQueryEscapeRoomButtonClicked); } } // 数据类 [Serializable] public class GameEscapeRoomResponseVo { public int escapeId; // 游戏的ID public int roomNo; // 房间编号 public float roomBeansCoin; // 房间下注欢乐豆 } [Serializable] public class Data { public List gameEscapeRoomResponseVoList; // 房间列表 } [Serializable] public class ServerResponse { public int code; // 响应状态码 public string message; // 提示语 public Data data; // 数据对象 } }*/ //解析+高频版 /*public class QueryRoomdetails512 : MonoBehaviour { public string token = null; // 保存最新的 token,初始为 null public int escapeId = -1; // 保存最新的 escapeId,初始为 -1 表示未设置 public int userId; public string lastEscapeRoomResponse = null; // 保存最新的逃亡房间查询响应 // 假设有一个手动查询逃亡房间详情的按钮 //public Button queryEscapeRoomButton; private Coroutine queryCoroutine; // 用于保存协程引用 void Start() { // 注册监听事件,当收到 token 时,触发 HandleTokenReceived LoginAndGetToken.OnTokenReceived += HandleTokenReceived; // 注册监听,当 escapeId 更新时调用 HandleGameEscapeIdUpdated selectLatest511.OnGameEscapeIdUpdated += HandleGameEscapeIdUpdated; //// 假设按钮被点击时调用 OnQueryEscapeRoomButtonClicked //if (queryEscapeRoomButton != null) //{ // queryEscapeRoomButton.onClick.AddListener(OnQueryEscapeRoomButtonClicked); //} // 启动协程,每两秒查询一次 queryCoroutine = StartCoroutine(QueryEscapeRoomRoutine()); } // 当接收到 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 更新时自动调用查询逃亡房间详情 lastEscapeRoomResponse = await QueryEscapeRoomDetails(); Debug.Log("HandleGameEscapeIdUpdated 处理的查询逃亡房间响应: " + lastEscapeRoomResponse); } // 加载初始数据,使用最新的 token public async void LoadInitialData() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法加载初始数据,token 未设置。"); return; } // 调用查询逃亡房间详情方法 lastEscapeRoomResponse = await QueryEscapeRoomDetails(); Debug.Log("初始加载的查询逃亡房间详情响应: " + lastEscapeRoomResponse); } // 按钮点击后触发逃亡房间详情查询操作 public async void OnQueryEscapeRoomButtonClicked() { // 检查 token 和 escapeId 是否已正确设置 if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法查询逃亡房间详情,token 未设置。"); return; } if (escapeId == -1) { Debug.LogWarning("无法查询逃亡房间详情,escapeId 未设置。"); return; } // 调用查询逃亡房间详情方法 lastEscapeRoomResponse = await QueryEscapeRoomDetails(); Debug.Log("用户按钮触发的查询逃亡房间详情响应: " + lastEscapeRoomResponse); // 根据响应做进一步的处理 HandleEscapeRoomResponse(lastEscapeRoomResponse); } // 查询逃亡房间详情 public async Task QueryEscapeRoomDetails() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法查询逃亡房间详情,token 未设置。"); return null; } if (escapeId == -1) { Debug.LogWarning("无法查询逃亡房间详情,escapeId 未设置。"); return null; } var headers = CreateHeaders(); string body = $@" {{ ""userId"": {userId}, ""escapeId"": {escapeId} }}"; Debug.Log("正在查询逃亡房间详情..."); string response = await web.SendRequest("http://121.40.42.41:8080/snail/LatestGame511/queryEscapeRoomList", "POST", body, headers); Debug.Log("查询逃亡房间详情响应: " + response); // 反序列化 JSON 数据为 ServerResponse 对象 ServerResponse serverResponse = JsonConvert.DeserializeObject(response); if (serverResponse != null && serverResponse.code == 200) { // 保存反序列化后的房间详情数据 if (serverResponse.data != null && serverResponse.data.gameEscapeRoomResponseVoList != null) { foreach (var room in serverResponse.data.gameEscapeRoomResponseVoList) { Debug.Log($"Escape ID: {room.escapeId}, Room No: {room.roomNo}, Room Beans Coin: {room.roomBeansCoin}"); } } } else { Debug.LogWarning("解析失败或响应错误:" + response); } return response; // 返回响应 } // 创建请求头,使用最新的 token public Dictionary CreateHeaders() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("尝试创建请求头时,token 未设置。"); return new Dictionary(); } return new Dictionary { { "Authorization", token } }; } // 处理 QueryEscapeRoomDetails 方法的响应 private void HandleEscapeRoomResponse(string response) { ServerResponse serverResponse = JsonConvert.DeserializeObject(response); if (serverResponse != null && serverResponse.code == 200) { Debug.Log("查询逃亡房间详情成功!"); if (serverResponse.data != null && serverResponse.data.gameEscapeRoomResponseVoList != null) { foreach (var room in serverResponse.data.gameEscapeRoomResponseVoList) { Debug.Log($"Escape ID: {room.escapeId}, Room No: {room.roomNo}, Room Beans Coin: {room.roomBeansCoin}"); } } } else { Debug.LogWarning("查询逃亡房间详情失败,服务器响应: " + response); } } // 每两秒查询一次逃亡房间详情的协程 private IEnumerator QueryEscapeRoomRoutine() { while (true) { // 每两秒检查并查询逃亡房间详情 if (!string.IsNullOrEmpty(token) && escapeId != -1) { yield return QueryEscapeRoomDetails(); } yield return new WaitForSeconds(2f); // 每两秒执行一次 } } void OnDestroy() { // 注销监听事件,避免内存泄漏 LoginAndGetToken.OnTokenReceived -= HandleTokenReceived; selectLatest511.OnGameEscapeIdUpdated -= HandleGameEscapeIdUpdated; //// 取消按钮的点击监听 //if (queryEscapeRoomButton != null) //{ // queryEscapeRoomButton.onClick.RemoveListener(OnQueryEscapeRoomButtonClicked); //} // 停止查询协程,防止内存泄漏 if (queryCoroutine != null) { StopCoroutine(queryCoroutine); } } // 数据类 [Serializable] public class GameEscapeRoomResponseVo { public int escapeId; // 游戏的ID public int roomNo; // 房间编号 public float roomBeansCoin; // 房间下注欢乐豆 } [Serializable] public class Data { public List gameEscapeRoomResponseVoList; // 房间列表 } [Serializable] public class ServerResponse { public int code; // 响应状态码 public string message; // 提示语 public Data data; // 数据对象 } }*/ //解析+高频+单例 public class QueryRoomdetails512 : MonoBehaviour { // 单例实例 public static QueryRoomdetails512 Instance { get; private set; } // 逃亡房间详情变量 public int latestEscapeId; // 最新的 escapeId public int latestRoomNo; // 最新的房间编号 public float latestRoomBeansCoin; // 最新的房间下注欢乐豆 public string token = null; // 保存最新的 token,初始为 null public int escapeId = -1; // 保存最新的 escapeId,初始为 -1 表示未设置 public int userId; public string lastEscapeRoomResponse = null; // 保存最新的逃亡房间查询响应 private Coroutine queryCoroutine; // 用于保存协程引用 void Awake() { // 实现单例模式 if (Instance == null) { Instance = this; DontDestroyOnLoad(gameObject); // 保证场景切换时不销毁这个对象 } else { Destroy(gameObject); // 确保只有一个实例 } } void Start() { // 注册监听事件,当收到 token 时,触发 HandleTokenReceived LoginAndGetToken.OnTokenReceived += HandleTokenReceived; // 注册监听,当 escapeId 更新时调用 HandleGameEscapeIdUpdated selectLatest511.OnGameEscapeIdUpdated += HandleGameEscapeIdUpdated; // 启动协程,每两秒查询一次 queryCoroutine = StartCoroutine(QueryEscapeRoomRoutine()); } // 当接收到 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 更新时自动调用查询逃亡房间详情 lastEscapeRoomResponse = await QueryEscapeRoomDetails(); // Debug.Log("HandleGameEscapeIdUpdated 处理的查询逃亡房间响应: " + lastEscapeRoomResponse); } // 加载初始数据,使用最新的 token public async void LoadInitialData() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法加载初始数据,token 未设置。"); return; } // 调用查询逃亡房间详情方法 lastEscapeRoomResponse = await QueryEscapeRoomDetails(); // Debug.Log("初始加载的查询逃亡房间详情响应: " + lastEscapeRoomResponse); } // 查询逃亡房间详情 public async Task QueryEscapeRoomDetails() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("无法查询逃亡房间详情,token 未设置。"); return null; } if (escapeId == -1) { Debug.LogWarning("无法查询逃亡房间详情,escapeId 未设置。"); return null; } var headers = CreateHeaders(); string body = $@" {{ ""userId"": {userId}, ""escapeId"": {escapeId} }}"; // Debug.Log("正在查询逃亡房间详情..."); string response = await web.SendRequest("http://121.40.42.41:8080/snail/LatestGame511/queryEscapeRoomList", "POST", body, headers); Debug.Log("5.1.2查询逃亡房间详情响应: " + response); // 反序列化 JSON 数据为 ServerResponse 对象并处理响应 HandleEscapeRoomResponse(response); return response; // 返回响应 } // 创建请求头,使用最新的 token public Dictionary CreateHeaders() { if (string.IsNullOrEmpty(token)) { Debug.LogWarning("尝试创建请求头时,token 未设置。"); return new Dictionary(); } return new Dictionary { { "Authorization", token } }; } // 处理 QueryEscapeRoomDetails 方法的响应 private void HandleEscapeRoomResponse(string response) { ServerResponse serverResponse = JsonConvert.DeserializeObject(response); if (serverResponse != null && serverResponse.code == 200) { Debug.Log("查询逃亡房间详情成功!"); if (serverResponse.data != null && serverResponse.data.gameEscapeRoomResponseVoList != null) { // 保存第一个房间的详情==============================================================================仅第一=========================================================== var room = serverResponse.data.gameEscapeRoomResponseVoList[0]; latestEscapeId = room.escapeId; latestRoomNo = room.roomNo; latestRoomBeansCoin = room.roomBeansCoin; foreach (var roomDetail in serverResponse.data.gameEscapeRoomResponseVoList) { Debug.Log($"Escape ID: {roomDetail.escapeId}, Room No: {roomDetail.roomNo}, Room Beans Coin: {roomDetail.roomBeansCoin}"); } } } else { Debug.LogWarning("查询逃亡房间详情失败,服务器响应: " + response); } } // 每两秒查询一次逃亡房间详情的协程 private IEnumerator QueryEscapeRoomRoutine() { while (true) { // 每两秒检查并查询逃亡房间详情 if (!string.IsNullOrEmpty(token) && escapeId != -1) { yield return QueryEscapeRoomDetails(); } yield return new WaitForSeconds(2f); // 每两秒执行一次 } } void OnDestroy() { // 注销监听事件,避免内存泄漏 LoginAndGetToken.OnTokenReceived -= HandleTokenReceived; selectLatest511.OnGameEscapeIdUpdated -= HandleGameEscapeIdUpdated; // 停止查询协程,防止内存泄漏 if (queryCoroutine != null) { StopCoroutine(queryCoroutine); } } // 数据类 [Serializable] public class GameEscapeRoomResponseVo { public int escapeId; // 游戏的ID public int roomNo; // 房间编号 public float roomBeansCoin; // 房间下注欢乐豆 } [Serializable] public class Data { public List gameEscapeRoomResponseVoList; // 房间列表 } [Serializable] public class ServerResponse { public int code; // 响应状态码 public string message; // 提示语 public Data data; // 数据对象 } } //单例使用示例 //public class AnotherClass : MonoBehaviour //{ // void Start() // { // // 通过 Singleton 实例访问数据 // int escapeId = QueryRoomdetails512.Instance.latestEscapeId; // int roomNo = QueryRoomdetails512.Instance.latestRoomNo; // float roomBeansCoin = QueryRoomdetails512.Instance.latestRoomBeansCoin; // Debug.Log($"Latest Escape ID: {escapeId}, Room No: {roomNo}, Room Beans Coin: {roomBeansCoin}"); // } //}