12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- 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<string> dogsList = new List<string>();
- 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);
- form.AddField("date_time", DateTime.Now.ToString()); // 可选项,以服务器时间为准
- StartCoroutine(WebController.PostRequest(url, form, callback: ItemUseCallback));
- }
- // Post道具使用网络通讯后Callback
- void ItemUseCallback(string json)
- {
- var data = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
- if (data != null && data["status"].ToString() == "success")
- {
- var user_info = JsonConvert.DeserializeObject<Dictionary<string, string>>(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<DogProperty[]>(data["dogs"].ToString());
- UserProperty.dogs.Clear();
- foreach (var dog in dogProperties)
- {
- UserProperty.dogs.Add(dog);
- }
- }
- else
- {
- Debug.Log(data["message"]);
- }
- }
- }
|