Commit 8c887e2b authored by 潘梓豪's avatar 潘梓豪

更新脚本

parent b35694ca
......@@ -92,7 +92,7 @@ public class ProductioRowData : MonoBehaviour
production.OnReceiveMsg = OnReceiveMsg;
production.OnReceiveMsg.AddListener(production._onReceiveMsg);
production.downloadUntily = new DownloadUntily();
production.aliyunOSSDownLoad = new AliyunOSS.AliyunOSSDownLoad();
if (type == 1)
{
production.set_btn(true);
......
......@@ -7,6 +7,7 @@ using UnityEngine.Networking;
using LitJson;
using System.Text;
using System;
using AliyunOSS;
public class Production : MonoBehaviour
{
......@@ -33,25 +34,59 @@ public class Production : MonoBehaviour
public DownloadUntily downloadUntily;
public AliyunOSSDownLoad aliyunOSSDownLoad;
public GameObject progress_side;
public Image preset_image;
public float fill_data=0;
[Header("收到服务器信息事件")]
public ReceiveMsgEvent<object, string> OnReceiveMsg;
public delegate void UpdateUIText(float progress);
public UpdateUIText updateUIText;
public void Start()
{
updateUIText = new UpdateUIText(UpdateText);
//this.OnReceiveMsg.AddListener(_onReceiveMsg);
}
void LateUpdate()
{
StartCoroutine(update_progress());
}
public IEnumerator update_progress()
{
if (progress_side.active)
{
preset_image.fillAmount = fill_data;
if (fill_data == 1f)
{
fill_data = 0;
progress_side.SetActive(false);
}
}
else
{
if (fill_data > 0 && fill_data < 1)
{
progress_side.SetActive(true);
}
}
yield return new WaitForSeconds(1f);
}
//启动按钮
public void startProgress()
{
string json = "{\"productionid\":"+id+",\"code\":"+RobotCode.getMNum()+"}";
//请求校验,获取注册机码
StartCoroutine(request_post(Setting.IP + "/zeus/zeushub/getRobotCode?"+ "productionid="+id+"&code="+RobotCode.getMNum(), json, 1));
......@@ -70,7 +105,8 @@ public class Production : MonoBehaviour
}*/
if (url != null && !url.Equals(""))
{
StartCoroutine(downloadUntily.DownOss(url, id, appname, this));
//StartCoroutine(aliyunOSSDownLoad.DownLoad(url, id, appname, this));
aliyunOSSDownLoad.DownLoad(url, id, appname, this);
}
}
......@@ -91,19 +127,14 @@ public class Production : MonoBehaviour
{
if (jd["id"].ToString().Equals(id))
{
if (!progress_side.active)
{
progress_side.SetActive(true);
}
else
Debug.Log(jd["id"]);
Debug.Log(jd["jiedi"]);
float present = float.Parse(jd["jiedi"].ToString());
preset_image.fillAmount = present;
if (present == 1f)
{
float present = float.Parse(jd["jiedi"].ToString()) / 100f;
preset_image.fillAmount = present;
if (present == 1f)
{
preset_image.fillAmount = 0;
progress_side.SetActive(false);
}
preset_image.fillAmount = 0;
progress_side.SetActive(false);
}
}
}else if (parameter.Equals("savepath"))
......@@ -217,6 +248,11 @@ public class Production : MonoBehaviour
}
}
void UpdateText(float progress)
{
fill_data = progress;
}
public void set_btn(bool flag)
{
foreach(Button item in button)
......@@ -225,4 +261,6 @@ public class Production : MonoBehaviour
}
}
}
using System;
using System.Threading;
using Aliyun.OSS;
using Aliyun.OSS.Common;
using System.IO;
using System.Collections;
using UnityEngine;
using LitJson;
using System.IO.Compression;
using System.Text.RegularExpressions;
using System.Text;
using System.Threading.Tasks;
using UnityEditor.Events;
namespace AliyunOSS
{
public class AliyunOSSDownLoad
{
// 创建OssClient实例。
static OssClient client = new OssClient(Setting.endpoint, Setting.accessKeyId, Setting.accessKeySecret);
private bool isdown = false;
private string id;
private string url;
delegate void UpdateUIText(Production production,JsonData js_data);
public void DownLoad(string downloadingUrl, string id, string appname, Production production)
{
if (!isdown)
{
JsonData js_data = new JsonData();
this.id = id;
if (!Directory.Exists("D://DownloadDemo"))
{
Directory.CreateDirectory("D://DownloadDemo");
}
downloadingUrl = Uri.UnescapeDataString(downloadingUrl);
// 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
var objectName = downloadingUrl.Substring(downloadingUrl.LastIndexOf("/") + 1);
// 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。
var downloadFilename = "D://DownloadDemo/" + objectName;
Debug.Log(downloadingUrl);
if (downloadingUrl.IndexOf("https://") < 0)
{
js_data["msg"] = "下载路径不合法,请联系管理员";
production.OnReceiveMsg.Invoke(js_data, "msg");
isdown = false;
}
else
{
if (!Directory.Exists("D://DownloadDemo/" + downloadFilename.Substring(downloadFilename.LastIndexOf("/") + 1, downloadFilename.LastIndexOf(".") - (downloadFilename.Substring(0, downloadFilename.LastIndexOf("/") + 1).Length)) + "/"))
PutObjectWithProcessByThread(objectName, downloadFilename, js_data, production, isdown, id, appname);
}
}
}
private void PutObjectWithProcessByThread(string fullFilePath, string downloadFilename, JsonData js_data, Production production, bool isdown, string id, string appname)
{
isdown = true;
Thread thread = null;
thread = new Thread(()=>{
try
{
float TotalByte = 0;
var len = 0;
var getObjectRequest = new GetObjectRequest(Setting.bucketName, fullFilePath);
UpdateUIText updateUIText = new UpdateUIText(UpdateText);
//下载进度
getObjectRequest.StreamTransferProgress += (obg, args) =>
{
float putProcess = (args.TransferredBytes * 100 / args.TotalBytes);
TotalByte += putProcess;
float present = putProcess / 100f;
production.updateUIText.BeginInvoke(present, null,null);
/*production.preset_image.fillAmount = present;
if (present == 1f)
{
production.preset_image.fillAmount = 0;
production.progress_side.SetActive(false);
}
if (putProcess >= 1)
{
getObjectRequest.StreamTransferProgress = null;
}*/
};
// 下载文件到流。OssObject包含了文件的各种信息,如文件所在的存储空间、文件名、元信息以及一个输入流。
var obj = client.GetObject(getObjectRequest);
using (var requestStream = obj.Content)
{
byte[] buf = new byte[1024];
var fs = File.Open(downloadFilename, FileMode.OpenOrCreate);
// 通过输入流将文件的内容读取到文件或者内存中。
while ((len = requestStream.Read(buf, 0, 1024)) != 0)
{
fs.Write(buf, 0, len);
}
fs.Close();
//解压
//ZipFile.ExtractToDirectory(downloadFilename, "D://DownloadDemo/");
Debug.Log("解压前:" + downloadFilename.Substring(downloadFilename.LastIndexOf('/') + 1, downloadFilename.LastIndexOf('.') - downloadFilename.LastIndexOf('/') - 1));
UnZip(downloadFilename, "D://DownloadDemo/", downloadFilename.Substring(downloadFilename.LastIndexOf('/') + 1, downloadFilename.LastIndexOf('.') - downloadFilename.LastIndexOf('/') - 1));
//删除文件
File.Delete(downloadFilename);
//string json = "{\"code\":\"" + RobotCode.getMNum() + "\",\"productionid\":\"" + id + "\"}";
js_data = new JsonData();
js_data["apppath"] = "D://DownloadDemo/" + downloadFilename.Substring(downloadFilename.LastIndexOf("/") + 1, downloadFilename.LastIndexOf(".") - (downloadFilename.Substring(0, downloadFilename.LastIndexOf("/") + 1).Length)) + "/" + appname;
js_data["productionid"] = id;
js_data["code"] = RobotCode.getMNum();
//保存
//production.OnReceiveMsg.Invoke(js_data, "savepath");
updateUIText.BeginInvoke(production,js_data, null, null);
isdown = false;
//browser.CallFunction("msg", "D://DownloadDemo/" + downloadFilename.Substring(downloadFilename.LastIndexOf("/") + 1, downloadFilename.LastIndexOf(".") - (downloadFilename.Substring(0, downloadFilename.LastIndexOf("/") + 1).Length)) + "/" + appname, id, 1);
}
}
catch (OssException e)
{
Console.WriteLine("下载错误:" + e);
}
catch (Exception e)
{
Console.WriteLine("下载错误:" + e);
}
finally
{
thread.Abort();
}
});
thread.Start();
}
// 定义一个函数,用于在UI线程中更新UI元素
void UpdateText(Production production,JsonData js_data)
{
production.OnReceiveMsg.Invoke(js_data, "sendProcess");
}
/// <summary>
/// 解压zip文件,并覆盖保存到指定的目标路径文件下
/// </summary>
/// <param name="zipFilePath">将要解压缩的zip文件的路径</param>
/// <param name="unZipDir">解压后将zip中的文件存储到磁盘的目标路径</param>
/// <returns></returns>
public static bool UnZip(string zipFilePath, string unZipDir, string directoryName)
{
bool result;
try
{
unZipDir = unZipDir.EndsWith(@"\") ? unZipDir : unZipDir + @"\";
var directoryinfo = new DirectoryInfo(unZipDir);
if (!directoryinfo.Exists) directoryinfo.Create();
var fileinfo = new FileInfo(zipFilePath);
if (!fileinfo.Exists) return false;
using (var zipToOpen = new FileStream(zipFilePath, FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
{
using (var archive = new ZipArchive(zipToOpen, ZipArchiveMode.Read))
{
foreach (var zipArchiveEntry in archive.Entries)
{
if (!zipArchiveEntry.FullName.EndsWith("/"))
{
//中文出现乱码问题,截取中文段部分后把自定义的directoryName,拼接到前面
var entryFilePath = directoryName + '/' + Regex.Replace(zipArchiveEntry.FullName.Substring(zipArchiveEntry.FullName.IndexOf('/') + 1).Replace("/", @"\"), @"^\\*", "");
// Debug.Log("zipArchiveEntry.FullName=" +zipArchiveEntry.FullName);
// Debug.Log("entryFilePath=" + entryFilePath);
var filePath = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(directoryinfo + entryFilePath));
var content = new byte[zipArchiveEntry.Length];
zipArchiveEntry.Open().Read(content, 0, content.Length);
var greatFolder = Directory.GetParent(filePath);
if (!greatFolder.Exists)
greatFolder.Create();
File.WriteAllBytes(filePath, content);
}
}
}
}
result = true;
}
catch (Exception e)
{
Debug.Log(e);
result = false;
}
return result;
}
}
}
fileFormatVersion: 2
guid: 8ed2a6b6c6d1e41468fe154e67c95f4a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -232,12 +232,9 @@ public class DownloadUntily
isdown = false;
//browser.CallFunction("msg", "已存在项目", null, 2);
}
}
}
}
public void PutOss(string base64,string localFilename)
{
......
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;
public class MainThreadDispatcher : MonoBehaviour
{
private static MainThreadDispatcher instance;
private static readonly Queue<Action> actions = new Queue<Action>();
private static readonly object lockObject = new object();
public static MainThreadDispatcher Instance
{
get
{
if (instance == null)
{
instance = FindObjectOfType<MainThreadDispatcher>();
if (instance == null)
{
var go = new GameObject("MainThreadDispatcher");
instance = go.AddComponent<MainThreadDispatcher>();
}
}
return instance;
}
}
private void Awake()
{
DontDestroyOnLoad(gameObject);
}
private void Update()
{
lock (lockObject)
{
while (actions.Count > 0)
{
actions.Dequeue().Invoke();
}
}
}
public void Enqueue(Action action)
{
lock (lockObject)
{
actions.Enqueue(action);
}
}
public void Enqueue(IEnumerator coroutine)
{
lock (lockObject)
{
actions.Enqueue(() => StartCoroutine(coroutine));
}
}
public static void RunOnMainThread(Action action)
{
Instance.Enqueue(action);
}
public static void RunOnMainThread(IEnumerator coroutine)
{
Instance.Enqueue(coroutine);
}
}
fileFormatVersion: 2
guid: 0218216871585ca4e8d439729945037e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class UnityMainThreadDispatcher : MonoBehaviour
{
private static UnityMainThreadDispatcher instance;
private readonly Queue<System.Action> queue = new Queue<System.Action>();
public UnityEvent UpdateEvent = new UnityEvent();
public static UnityMainThreadDispatcher Instance()
{
if (!instance)
{
instance = FindObjectOfType<UnityMainThreadDispatcher>();
if (!instance)
{
var obj = new GameObject("UnityMainThreadDispatcher");
instance = obj.AddComponent<UnityMainThreadDispatcher>();
}
}
return instance;
}
private void Update()
{
lock (queue)
{
while (queue.Count > 0)
{
queue.Dequeue().Invoke();
}
}
}
public void Enqueue(System.Action action)
{
lock (queue)
{
queue.Enqueue(action);
}
}
}
fileFormatVersion: 2
guid: f54d8078cfe456741b214573c98c0eef
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed.
......@@ -994,7 +994,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 460.5, y: -501.08337}
m_AnchoredPosition: {x: 547.5, y: -594.8571}
m_SizeDelta: {x: 500, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6928409732293149083
......@@ -1557,6 +1557,7 @@ MonoBehaviour:
manager: {fileID: 0}
progress_side: {fileID: 5184067287142128276}
preset_image: {fileID: 8565227069874954852}
fill_data: 0
--- !u!114 &2801718033762222592
MonoBehaviour:
m_ObjectHideFlags: 0
......
......@@ -7191,3 +7191,4 @@
2023/4/4 11:28:57 api:http://8.134.114.12:11011/zeus/zeushub/getRobotCode?productionid=12877&code=54bce43eff19b4720e1f58fe HTTP/1.1 502 Bad Gateway
2023/4/7 16:10:13 api:http://8.134.114.12:11011/oauth/token Cannot connect to destination host
2023/4/10 14:04:19 api:http://8.134.114.12:11011/oauth/token Cannot connect to destination host
2023/5/4 8:33:07 api:http://8.134.114.12:11011/oauth/token Cannot connect to destination host
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment