using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; /* 本代码主要是因为Unity限制Monobehavior不能new()。 * 因此在本类中监控ItemUseController._itemUseId 一旦不是null就触发网络通讯 */ public class ItemUseWebCommController : MonoBehaviour { // Start is called once before the first execution of Update after the MonoBehaviour is created //void Start() //{ //} // Update is called once per frame void Update() { if (ItemUseController._itemUseId != null) { StartCoroutine(ItemUsePost(ItemUseController._itemUseId)); ItemUseController._itemUseId = null; } } // Post道具使用时网络通讯 IEnumerator ItemUsePost(string itemId) { Debug.Log("Item use Post request"); // 提交POST string url = "/api/item/use/"; WWWForm form = new(); form.AddField("user_id", UserProperty.userId); form.AddField("item_id", itemId); form.AddField("dog_names", UserProperty.dogNames()); form.AddField("date_time", DateTime.Now.ToString()); StartCoroutine(WebController.PostRequest(url, form, callback: ItemUseCallback)); yield break; } // Post道具使用网络通讯后Callback void ItemUseCallback(string json) { var data = JsonConvert.DeserializeObject>(json); if (data != null && data["status"].ToString() == "success") { var user_info = JsonConvert.DeserializeObject>(data["user_info"].ToString()); UserProperty.name = user_info["user_name"]; UserProperty.coin = int.Parse(user_info["coin"]); UserProperty.mobile = user_info["mobile"]; UserProperty.email = user_info["email"]; UserProperty.level = user_info["level"]; UserProperty.isRegUser = bool.Parse(user_info["isRegUser"]); // 清空现有数据保存狗的数据 DogProperty[] dogProperties = JsonConvert.DeserializeObject(data["dogs"].ToString()); UserProperty.dogs.Clear(); foreach (var dog in dogProperties) { UserProperty.dogs.Add(dog); } // 判断用户狗的数量,如果为0就跳转用户创建狗。 if (UserProperty.dogs.Count < 1) { GameData.subScene = "Login_InitDog"; SceneManager.LoadScene("Login"); } } else { Debug.Log(data["message"]); } } }