From 14f74b229c9a354ebe35c9375710cf7dfc92d39a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E9=93=AE?= <834207172@qq.com>
Date: Wed, 24 Sep 2025 14:28:10 +0800
Subject: [PATCH] 1
---
.../Tool/WebRequest/WebRequestSystem.cs | 318 ++++++++++++------
Assets/00.StaryEvo/package.json | 2 +-
.../Editor/Script/CreatPointCloudEntity.cs | 52 ++-
Assets/11.PointCloudTools/package.json | 2 +-
4 files changed, 255 insertions(+), 119 deletions(-)
diff --git a/Assets/00.StaryEvo/Runtime/Tool/WebRequest/WebRequestSystem.cs b/Assets/00.StaryEvo/Runtime/Tool/WebRequest/WebRequestSystem.cs
index 0923ed1..49c08c7 100644
--- a/Assets/00.StaryEvo/Runtime/Tool/WebRequest/WebRequestSystem.cs
+++ b/Assets/00.StaryEvo/Runtime/Tool/WebRequest/WebRequestSystem.cs
@@ -10,6 +10,8 @@ using UnityEngine.Networking;
namespace Stary.Evo
{
+
+
public static class WebRequestSystem
{
private static string authorization;
@@ -30,11 +32,14 @@ namespace Stary.Evo
string postData = JsonConvert.SerializeObject(data);
try
{
-#if UNITY_2021_3_OR_NEWER
- using UnityWebRequest webRequest = UnityWebRequest.PostWwwForm(url, postData);
-#else
- using UnityWebRequest webRequest = UnityWebRequest.PostWwwForm(url, postData);
-#endif
+ using UnityWebRequest webRequest = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST);
+
+ webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
+ if (string.IsNullOrEmpty(postData))
+ {
+ Debug.LogError("WebRequestSystem.Login postData is null");
+ return false;
+ }
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData);
webRequest.uploadHandler = new UploadHandlerRaw(postBytes);
@@ -85,7 +90,10 @@ namespace Stary.Evo
authorization = EditorPrefs.GetString("Authorization");
try
{
- using UnityWebRequest webRequest = UnityWebRequest.Get($"{url}?token={authorization}");
+
+ using UnityWebRequest webRequest =
+ new UnityWebRequest($"{url}/{authorization}", UnityWebRequest.kHttpVerbGET);
+ //using UnityWebRequest webRequest = UnityWebRequest.Get($"{url}?token={authorization}");
webRequest.downloadHandler = new DownloadHandlerBuffer();
webRequest.timeout = 10;
await webRequest.SendWebRequest();
@@ -146,6 +154,7 @@ namespace Stary.Evo
try
{
using UnityWebRequest webRequest = UnityWebRequest.Post(url, form);
+
webRequest.SetRequestHeader("Authorization", authorization);
webRequest.disposeUploadHandlerOnDispose = true;
webRequest.disposeDownloadHandlerOnDispose = true;
@@ -256,8 +265,77 @@ namespace Stary.Evo
}
}
+ ///
+ /// GET请求数据
+ /// 携带数据:否
+ /// 幂等性:是
+ ///
+ /// 请求数据的URL地址
+ /// 请求数据的路径
+ ///
+ public static async Task Get(string url, string path)
+ {
+ if (!GetTokenState())
+ {
+ Debug.LogError("用户未登录,请先登录");
+ return new ResultMessageEntity()
+ {
+ code = 2001,
+ message = "用户未登录,请先登录"
+ };
+ }
+
+ try
+ {
+ string fullUrl = url.TrimEnd('/') + "/" + path.TrimStart('/');
+ using UnityWebRequest webRequest = new UnityWebRequest(fullUrl, UnityWebRequest.kHttpVerbGET);
+ webRequest.downloadHandler = new DownloadHandlerBuffer();
+ if (authorization != null)
+ webRequest.SetRequestHeader("Authorization", authorization); // 修正请求头名称规范
+
+ webRequest.timeout = 20;
+ await webRequest.SendWebRequest();
+
+ // 增强错误处理
+ if (webRequest.result != UnityWebRequest.Result.Success)
+ {
+ var errorMsg = $"HTTP {webRequest.responseCode}\n" +
+ $"URL: {url}\n" +
+ $"Error: {webRequest.error}\n" +
+ $"Response: {webRequest.downloadHandler.text}";
+
+ Debug.LogError(errorMsg);
+ return new ResultMessageEntity()
+ {
+ code = 5001,
+ message = errorMsg
+ };
+ }
+
+ ResultMessageEntity resultMessageEntity =
+ JsonConvert.DeserializeObject(webRequest.downloadHandler.text);
+ if (resultMessageEntity.code != 200)
+ {
+ Debug.LogError(resultMessageEntity.message);
+ }
+
+ return resultMessageEntity;
+ }
+ catch (Exception e)
+ {
+ Debug.LogError($"UnityEvo:WebRequestSystem.Get" + e.Message);
+ return new ResultMessageEntity()
+ {
+ code = 5001,
+ message = e.Message
+ };
+ }
+ }
+
///
/// POST请求数据
+ /// 携带数据:是
+ /// 幂等性:否
///
/// 获取Token值的服务URL地址(很重要)
/// 传入请求的参数,此处参数为JOSN格式
@@ -276,44 +354,44 @@ namespace Stary.Evo
try
{
-#if UNITY_2021_3_OR_NEWER
- using (UnityWebRequest webRequest = UnityWebRequest.PostWwwForm(url, postData)) //第二种写法此行注释
-#else
- using (UnityWebRequest webRequest = UnityWebRequest.PostWwwForm(url, postData)) //第二种写法此行注释
-#endif
+ using UnityWebRequest webRequest = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST);
+// #if UNITY_2021_3_OR_NEWER
+// using (UnityWebRequest webRequest = UnityWebRequest.PostWwwForm(url, postData)) //第二种写法此行注释
+// #else
+// using (UnityWebRequest webRequest = UnityWebRequest.PostWwwForm(url, postData)) //第二种写法此行注释
+// #endif
+ webRequest.downloadHandler = new DownloadHandlerBuffer();
+ byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData);
+ webRequest.uploadHandler = new UploadHandlerRaw(postBytes);
+ webRequest.SetRequestHeader("Content-Type", "application/json");
+ webRequest.SetRequestHeader("Authorization", authorization);
+ webRequest.disposeUploadHandlerOnDispose = true;
+ webRequest.disposeDownloadHandlerOnDispose = true;
+ webRequest.disposeCertificateHandlerOnDispose = true;
+ webRequest.timeout = 20;
+ await webRequest.SendWebRequest();
+ webRequest.uploadHandler?.Dispose();
+ // 更新错误检查方式
+ if (webRequest.result == UnityWebRequest.Result.ConnectionError ||
+ webRequest.result == UnityWebRequest.Result.ProtocolError)
{
- byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData);
- webRequest.uploadHandler = new UploadHandlerRaw(postBytes);
- webRequest.SetRequestHeader("Content-Type", "application/json");
- webRequest.SetRequestHeader("Authorization", authorization);
- webRequest.disposeUploadHandlerOnDispose = true;
- webRequest.disposeDownloadHandlerOnDispose = true;
- webRequest.disposeCertificateHandlerOnDispose = true;
- webRequest.timeout = 20;
- await webRequest.SendWebRequest();
- webRequest.uploadHandler?.Dispose();
- // 更新错误检查方式
- if (webRequest.result == UnityWebRequest.Result.ConnectionError ||
- webRequest.result == UnityWebRequest.Result.ProtocolError)
+ Debug.LogError(webRequest.error);
+ return new ResultMessageEntity()
{
- Debug.LogError(webRequest.error);
- return new ResultMessageEntity()
- {
- code = 5001,
- message = webRequest.error
- };
+ code = 5001,
+ message = webRequest.error
+ };
+ }
+ else
+ {
+ ResultMessageEntity resultMessageEntity =
+ JsonConvert.DeserializeObject(webRequest.downloadHandler.text);
+ if (resultMessageEntity.code != 200)
+ {
+ Debug.LogError(resultMessageEntity.message);
}
- else
- {
- ResultMessageEntity resultMessageEntity =
- JsonConvert.DeserializeObject(webRequest.downloadHandler.text);
- if (resultMessageEntity.code != 200)
- {
- Debug.LogError(resultMessageEntity.message);
- }
- return resultMessageEntity;
- }
+ return resultMessageEntity;
}
}
catch (Exception e)
@@ -328,78 +406,16 @@ namespace Stary.Evo
}
}
- ///
- /// GET请求数据
- ///
- /// 请求数据的URL地址
- /// 请求数据的路径
- ///
- public static async Task Get(string url,string path)
- {
- if (!GetTokenState())
- {
- Debug.LogError("用户未登录,请先登录");
- return new ResultMessageEntity()
- {
- code = 2001,
- message = "用户未登录,请先登录"
- };
- }
-
- try
- {
- string fullUrl = url.TrimEnd('/') + "/" + path.TrimStart('/');
- using UnityWebRequest webRequest = UnityWebRequest.Get(fullUrl);
- webRequest.downloadHandler = new DownloadHandlerBuffer();
- if (authorization != null)
- webRequest.SetRequestHeader("Authorization", authorization); // 修正请求头名称规范
-
- webRequest.timeout = 20;
- await webRequest.SendWebRequest();
-
- // 增强错误处理
- if (webRequest.result != UnityWebRequest.Result.Success)
- {
- var errorMsg = $"HTTP {webRequest.responseCode}\n" +
- $"URL: {url}\n" +
- $"Error: {webRequest.error}\n" +
- $"Response: {webRequest.downloadHandler.text}";
-
- Debug.LogError(errorMsg);
- return new ResultMessageEntity()
- {
- code = 5001,
- message = errorMsg
- };
- }
-
- ResultMessageEntity resultMessageEntity =
- JsonConvert.DeserializeObject(webRequest.downloadHandler.text);
- if (resultMessageEntity.code != 200)
- {
- Debug.LogError(resultMessageEntity.message);
- }
-
- return resultMessageEntity;
- }
- catch (Exception e)
- {
- Debug.LogError($"UnityEvo:WebRequestSystem.Get" + e.Message);
- return new ResultMessageEntity()
- {
- code = 5001,
- message = e.Message
- };
- }
- }
///
/// Delete请求数据
+ /// 携带数据:否
+ /// 幂等性:是
///
/// 请求数据的URL地址
/// 请求数据的路径
///
- public static async Task Delete(string url,string path)
+ public static async Task Delete(string url, string path)
{
if (!GetTokenState())
{
@@ -415,7 +431,7 @@ namespace Stary.Evo
{
// 修复URL拼接
string fullUrl = url.TrimEnd('/') + "/" + path.TrimStart('/');
- using UnityWebRequest webRequest = UnityWebRequest.Delete(fullUrl);
+ using UnityWebRequest webRequest = new UnityWebRequest(fullUrl, UnityWebRequest.kHttpVerbDELETE);
webRequest.downloadHandler = new DownloadHandlerBuffer();
if (authorization != null)
webRequest.SetRequestHeader("Authorization", authorization); // 修正请求头名称规范
@@ -438,6 +454,7 @@ namespace Stary.Evo
message = errorMsg
};
}
+
// 修复空响应处理
string responseText = webRequest.downloadHandler.text;
if (string.IsNullOrEmpty(responseText))
@@ -448,6 +465,7 @@ namespace Stary.Evo
message = "删除成功"
};
}
+
ResultMessageEntity resultMessageEntity =
JsonConvert.DeserializeObject(webRequest.downloadHandler.text);
if (resultMessageEntity.code != 200)
@@ -467,6 +485,94 @@ namespace Stary.Evo
};
}
}
+
+ ///
+ /// PUT请求数据
+ /// 携带数据:是
+ /// 幂等性:是
+ ///
+ /// 请求数据的URL地址
+ /// 请求数据的路径
+ /// 要更新的数据(JSON格式)
+ ///
+ public static async Task Put(string url, string putData)
+ {
+ if (!GetTokenState())
+ {
+ Debug.LogError("用户未登录,请先登录");
+ return new ResultMessageEntity()
+ {
+ code = 2001,
+ message = "用户未登录,请先登录"
+ };
+ }
+
+ try
+ {
+ // 修复URL拼接
+
+ using UnityWebRequest webRequest = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPUT);
+
+ // 设置上传处理器
+ byte[] putBytes = System.Text.Encoding.UTF8.GetBytes(putData);
+ webRequest.uploadHandler = new UploadHandlerRaw(putBytes);
+ webRequest.downloadHandler = new DownloadHandlerBuffer();
+
+ // 设置请求头
+ webRequest.SetRequestHeader("Content-Type", "application/json");
+ if (authorization != null)
+ webRequest.SetRequestHeader("Authorization", authorization); // 修正请求头名称规范
+
+ webRequest.timeout = 20;
+ await webRequest.SendWebRequest();
+
+ // 增强错误处理
+ if (webRequest.result != UnityWebRequest.Result.Success)
+ {
+ var errorMsg = $"HTTP {webRequest.responseCode}\n" +
+ $"URL: {url}\n" +
+ $"Error: {webRequest.error}\n" +
+ $"Response: {webRequest.downloadHandler.text}";
+
+ Debug.LogError(errorMsg);
+ return new ResultMessageEntity()
+ {
+ code = 5001,
+ message = errorMsg
+ };
+ }
+
+ // 处理空响应
+ string responseText = webRequest.downloadHandler.text;
+ if (string.IsNullOrEmpty(responseText))
+ {
+ return new ResultMessageEntity()
+ {
+ code = 200,
+ message = "更新成功"
+ };
+ }
+
+ ResultMessageEntity resultMessageEntity =
+ JsonConvert.DeserializeObject(webRequest.downloadHandler.text);
+ if (resultMessageEntity.code != 200)
+ {
+ Debug.LogError(resultMessageEntity.message);
+ }
+
+ return resultMessageEntity;
+ }
+ catch (Exception e)
+ {
+ Debug.LogError($"UnityEvo:WebRequestSystem.Put" + e.Message);
+ return new ResultMessageEntity()
+ {
+ code = 5001,
+ message = e.Message
+ };
+ }
+ }
+
public static bool GetTokenState()
{
if (string.IsNullOrEmpty(authorization))
diff --git a/Assets/00.StaryEvo/package.json b/Assets/00.StaryEvo/package.json
index 121496c..44e16f6 100644
--- a/Assets/00.StaryEvo/package.json
+++ b/Assets/00.StaryEvo/package.json
@@ -1,6 +1,6 @@
{
"name": "com.staryevo.main",
- "version": "2.0.6",
+ "version": "2.0.7",
"displayName": "00.StaryEvo",
"description": "This is an Framework package(后台服务器版本,端口9527)",
"unity": "2021.3",
diff --git a/Assets/11.PointCloudTools/Editor/Script/CreatPointCloudEntity.cs b/Assets/11.PointCloudTools/Editor/Script/CreatPointCloudEntity.cs
index 2ab10b5..121bad0 100644
--- a/Assets/11.PointCloudTools/Editor/Script/CreatPointCloudEntity.cs
+++ b/Assets/11.PointCloudTools/Editor/Script/CreatPointCloudEntity.cs
@@ -12,20 +12,50 @@ namespace Stary.Evo.Editor
public class CreatPointCloudEntity
{
private CreatPointCloudWindow window;
- [HideInInspector]
- public string id;
- [HorizontalGroup("identifier")] [ReadOnly] public string sceneName;
- [HorizontalGroup("identifier")][ReadOnly]
+ [HideInInspector] public string id;
+
+ [HorizontalGroup("identifier")] [ReadOnly]
+ public string sceneName;
+
+ [HorizontalGroup("identifier")] [ReadOnly]
public string identifier;
- [ReadOnly]
- public string sceneDesc;
- [HorizontalGroup("button")]
- public bool isActive;
+
+ [ReadOnly] public string sceneDesc;
+ [HorizontalGroup("button")] public bool isActive;
public CreatPointCloudEntity(CreatPointCloudWindow window)
{
this.window = window;
}
+
+ [HorizontalGroup("button")]
+ [Button("", Icon = SdfIconType.ArrowUpCircleFill, IconAlignment = IconAlignment.RightEdge)]
+ public async void UpdatePointCloud()
+ {
+ string ip = EditorPrefs.GetString("ip");
+ if (string.IsNullOrEmpty(ip))
+ {
+ EditorUtility.DisplayDialog("提示", "ip不能为空", "确定");
+ return;
+ }
+
+ var scene = new
+ {
+ id = id,
+ sceneName = sceneName,
+ sceneDesc = sceneDesc,
+ isActive = isActive,
+ };
+ string body = JsonConvert.SerializeObject(scene);
+ ResultMessageEntity entity = await WebRequestSystem.Put($"{ip}/SceneWork/UpdateScene", body);
+ if (entity.code == 200)
+ {
+
+ EditorUtility.DisplayDialog("提示", $"更新成功{scene}", "确定");
+ }
+ }
+
+
[HorizontalGroup("button")]
[Button("", Icon = SdfIconType.XCircle, IconAlignment = IconAlignment.RightEdge)]
public async void DeletePointCloud()
@@ -36,13 +66,13 @@ namespace Stary.Evo.Editor
EditorUtility.DisplayDialog("提示", "ip不能为空", "确定");
return;
}
- ResultMessageEntity entity = await WebRequestSystem.Delete(ip,$"/SceneWork/DeleteScenebyId/{id}");
- if (entity.code ==200)
+
+ ResultMessageEntity entity = await WebRequestSystem.Delete(ip, $"/SceneWork/DeleteScenebyId/{id}");
+ if (entity.code == 200)
{
window.SceneWorkEntities.Remove(this);
EditorUtility.DisplayDialog("提示", "删除成功", "确定");
}
}
-
}
}
\ No newline at end of file
diff --git a/Assets/11.PointCloudTools/package.json b/Assets/11.PointCloudTools/package.json
index 3f0dab0..b93f722 100644
--- a/Assets/11.PointCloudTools/package.json
+++ b/Assets/11.PointCloudTools/package.json
@@ -1,6 +1,6 @@
{
"name": "com.pointcloud",
- "version": "1.0.2",
+ "version": "1.0.3",
"displayName": "11.PointCloudTools",
"description": "点云开发工具",
"unity": "2021.3",