using System.Collections; using System.Collections.Generic; using UnityEngine; using AX.NetworkSystem; using System; using System.IO; public class DownloadFileTest : MonoBehaviour { public string SessionTag; public string[] FileList; public string Folder; private string[] fullnameList; private float[] progressList; private bool[] completedList; private string baseFolder; private ErrorInfo error; private void Start() { if (FileList == null) Debug.LogError("出大事了!"); fullnameList = new string[FileList.Length]; progressList = new float[FileList.Length]; completedList = new bool[FileList.Length]; baseFolder = FileTransfer.GetTempPath(); for (var i = 0; i < FileList.Length; ++i) fullnameList[i] = baseFolder + FileList[i]; } private void OnGUI() { GUILayout.BeginArea(new Rect(0, 0, 500, 400)); GUILayout.BeginVertical(); if (GUILayout.Button("开始下载一个文件")) { for (var i = 0; i < FileList.Length; ++i) { var fullname = FileList[i]; NetworkManager.GetSessionByTag(SessionTag).DownloadFileAsync(fullname, OnProgressChanged, OnCompleted); } } if (GUILayout.Button("开始下载一个文件夹")) { var baseFolder = Application.dataPath + "/"; var files = Directory.GetFiles(baseFolder+Folder, "*.*", SearchOption.AllDirectories); for (var i = 0; i < files.Length; ++i) { var fullname = files[i].Replace(baseFolder, ""); if (fullname.EndsWith(".meta")) continue; NetworkManager.GetSessionByTag(SessionTag).DownloadFileAsync(fullname, OnFolderCompleted); } } if (GUILayout.Button("下载一个不存在的文件")) { NetworkManager.GetSessionByTag(SessionTag).DownloadFileAsync(FileList.Length + ".jpg", OnProgressChanged, OnCompleted, OnError); } for (var i = 0; i < FileList.Length; ++i) { GUILayout.BeginHorizontal(); GUILayout.Label(FileList[i] + ": 进度 "); GUILayout.Label(progressList[i].ToString() + ", 完成 "); GUILayout.Label(completedList[i] ? "√" : "×"); GUILayout.EndHorizontal(); } if (!string.IsNullOrEmpty(error.ErrorMessage)) GUILayout.Label("下载错误:" + error.Filename + ", 错误码: " + error.ErrorCode + ", 错误信息: " + error.ErrorMessage); GUILayout.EndVertical(); GUILayout.EndArea(); } private void OnFolderCompleted(string fullName) { Debug.Log(fullName); } private void OnError(ErrorInfo errorInfo) { error = errorInfo; } private void OnCompleted(string fullname) { var index = Array.IndexOf(fullnameList, fullname); completedList[index] = true; } private void OnProgressChanged(string fullname, float progress) { var index = Array.IndexOf(fullnameList, fullname); progressList[index] = progress; } }