using Newtonsoft.Json; using NUnit.Framework; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; /* 本代码主要是因为Unity限制Monobehavior不能new()。 * 因此在本类中监控ItemUseController._itemUseId 一旦不是null就触发网络通讯 * 本代码用于Home场景,挂载在Player组件下 */ 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) { ItemUsePost(ItemUseController._itemUseId); ItemUseController._itemUseId = null; } } // Post道具使用时网络通讯 void ItemUsePost(string itemId) { Debug.Log("Item use Post request"); List dogsList = new List(); foreach (var dog in UserProperty.dogs) { dogsList.Add(dog.d_id); } string dogsJson = JsonConvert.SerializeObject(dogsList); // 提交POST string url = "/api/item/use/"; WWWForm form = new(); form.AddField("user_id", UserProperty.userId); form.AddField("item_id", itemId); form.AddField("dog_list", dogsJson); StartCoroutine(WebController.PostRequest(url, form, callback: ItemUseCallback)); } // Post道具使用网络通讯后Callback void ItemUseCallback(string json) { var data = JsonConvert.DeserializeObject>(json); if (data != null && data["status"].ToString() == "success") { // 刷新用户数据 var userInfoJson = data["user_info"].ToString(); UserProperty.FreshUserInfo(userInfoJson); string dogJson = data["dogs"].ToString(); UserProperty.FreshDogInfo(dogJson); // 刷新道具数据 var itemsJson = data["props"].ToString(); UserProperty.FreshUserItems(itemsJson); } else { Debug.Log(data["message"]); } } }