You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.2 KiB
111 lines
3.2 KiB
4 years ago
|
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;
|
||
|
}
|
||
|
}
|