YanCheng_Metrology/Assets/Scripts/Project/Manager/NetManager.cs

136 lines
3.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.IO;
using UnityEngine;
using UnityEngine.Events;
using LitJson;
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine.Networking;
using Unity.VisualScripting.FullSerializer;
using System.Runtime.InteropServices.ComTypes;
public class NetManager : BaseManager<NetManager>
{
private NetManager() { }
/// <summary>
/// 网络访问的token
/// </summary>
public string token;
public string url;
/// <summary>
/// UI_CheckTaskPanel面板内容的学习、练习模式可以外配,读取json的名称
/// </summary>
string fileName = "10001.json";
public string content { get; private set; }
[Serializable]
public class IPConfig
{
public string content;
}
/// <summary>
/// 获取本地配置文件
/// </summary>
/// <param name="action"></param>
public void GetConfig(UnityAction<bool> action)
{
string path = Application.streamingAssetsPath + "/Config/Config.txt";
if (File.Exists(path))
{
url = File.ReadAllText(path);
action?.Invoke(true);
}
else
{
Debug.Log("没有对应的文件");
action?.Invoke(false);
//UIManager.Instance.ShowPanel<UI_MessagePanel>(E_UI_Layer.System, (panel) =>
//{
// panel.Init("没有读取到正确的Ip地址文件,请检查项目StreamingAssets文件夹下Config文件是否正常配置地址端口后再试!", E_MessageType.Error, Const.E_QuitApp);
//});
}
}
/// <summary>
///
/// </summary>
/// <param name="info"></param>
public void SaveInfo(string info)
{
string path = Application.streamingAssetsPath + "/Config/info.txt";
Debug.Log(path);
File.WriteAllText(path, info);
}
/// <summary>
/// UI_CheckTaskPanel面板内容的学习、练习模式用json读取可以外配
/// </summary>
/// <param name="action"></param>
public void GetCheckTaskState(UnityAction<bool> action)
{
MonoMgr.Instance.StartCoroutine(GetCheckTaskStateAsync(action));
}
private IEnumerator GetCheckTaskStateAsync(UnityAction<bool> action)
{
string path = System.IO.Path.Combine(Application.streamingAssetsPath, fileName);
UnityWebRequest request = UnityWebRequest.Get(path);
yield return request.SendWebRequest();
if (request.result != UnityWebRequest.Result.Success)
{
Debug.Log("Failed to load file: " + request.error);
}
else
{
// 获取文件内容
string fileContent = request.downloadHandler.text;
IPConfig config = JsonUtility.FromJson<IPConfig>(fileContent);
content = config.content;
Debug.Log(content);
action?.Invoke(true);
}
}
/// <summary>
/// UI_CheckTaskPanel面板内容的考试模式用接口调取
/// </summary>
/// <param name="action"></param>
public void GetCheckTaskExam(UnityAction<bool> action)
{
MonoMgr.Instance.StartCoroutine(GetCheckTaskExamAsync(action));
}
private IEnumerator GetCheckTaskExamAsync(UnityAction<bool> action)
{
using (UnityWebRequest unityWebRequest = UnityWebRequest.Post("", string.Empty))
{
yield return unityWebRequest.SendWebRequest();
if (unityWebRequest.result == UnityWebRequest.Result.Success)
{
Debug.Log("连接成功:*******************\n" + unityWebRequest.downloadHandler.text);
string json = unityWebRequest.downloadHandler.text;
action?.Invoke(true);
Debug.Log("连接成功 ");
}
else
{
Debug.Log("连接失败 ");
action?.Invoke(false);
}
}
}
}