From c7d31c23f2e919e1bffbef6db79c7e4fef7c3145 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Wed, 9 Apr 2025 13:59:32 +0800 Subject: [PATCH 01/28] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/UI/UIScore.cs | 14 ++- .../LYTWebGLHelper.cs} | 102 +++++++++--------- .../LYTWebGLHelper.cs.meta} | 0 Assets/WebPlatform/Scripts.meta | 8 -- 4 files changed, 65 insertions(+), 59 deletions(-) rename Assets/WebPlatform/{Scripts/WebGLHelper.cs => LaiYiTe/LYTWebGLHelper.cs} (75%) rename Assets/WebPlatform/{Scripts/WebGLHelper.cs.meta => LaiYiTe/LYTWebGLHelper.cs.meta} (100%) delete mode 100644 Assets/WebPlatform/Scripts.meta diff --git a/Assets/Scripts/UI/UIScore.cs b/Assets/Scripts/UI/UIScore.cs index bc346de6..69eb0643 100644 --- a/Assets/Scripts/UI/UIScore.cs +++ b/Assets/Scripts/UI/UIScore.cs @@ -1,4 +1,5 @@ using Newtonsoft.Json; +using System.Collections.Generic; using TMPro; using UnityEngine; @@ -87,7 +88,9 @@ namespace QFramework.Example onlyCur = mData.onlyCurModule; } - + List stepNames = new List(); + List maxScore = new List(); + List scores = new List(); if (onlyCur) { foreach (var item in ScoreController.Instance.GetCurScoreData()) @@ -99,6 +102,9 @@ namespace QFramework.Example obj.transform.Find("Score").GetComponent().text = item.Value.value.ToString(); sum += float.Parse(item.Value.sum); score += item.Value.value; + stepNames.Add(item.Value.step + item.Value.name); + maxScore.Add(int.Parse(item.Value.sum)); + scores.Add((int)item.Value.value); } } else @@ -114,6 +120,9 @@ namespace QFramework.Example obj.transform.Find("Score").GetComponent().text = item.Value.value.ToString(); sum += float.Parse(item.Value.sum); score += item.Value.value; + stepNames.Add(item.Value.step + item.Value.name); + maxScore.Add(int.Parse(item.Value.sum)); + scores.Add((int)item.Value.value); } } } @@ -122,6 +131,9 @@ namespace QFramework.Example this.Score.text = score.ToString(); this.Sum.text = sum.ToString(); +//#if UNITY_WEBGL +// LYTWebGLHelper.Instance.UpLoadData((int)score, stepNames, maxScore, scores); +//#endif } protected override void OnShow() diff --git a/Assets/WebPlatform/Scripts/WebGLHelper.cs b/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs similarity index 75% rename from Assets/WebPlatform/Scripts/WebGLHelper.cs rename to Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs index ad0d032f..1cd7c801 100644 --- a/Assets/WebPlatform/Scripts/WebGLHelper.cs +++ b/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs @@ -11,9 +11,9 @@ using UnityEngine; using UnityEngine.Events; using UnityEngine.Networking; -public class WebGLHelper : Singleton +public class LYTWebGLHelper : Singleton { - private WebGLHelper() { } + private LYTWebGLHelper() { } public class LabData { public string GUID; @@ -101,10 +101,10 @@ public class WebGLHelper : Singleton } data.ExpStepVTwoList = list.ToArray(); - + SendScore(JsonConvert.SerializeObject(data)); } - IEnumerator SendScore(string json, UnityAction action) + IEnumerator SendScore(string json, UnityAction action = null) { if (string.IsNullOrEmpty(uploadUrl)) { @@ -132,58 +132,60 @@ public class WebGLHelper : Singleton Debug.Log($"Server Response: {request.downloadHandler.text}"); Response response = JsonConvert.DeserializeObject(request.downloadHandler.text); Debug.LogError(response.msg); + action?.Invoke(response.msg); } } } + + public class UploadData + { + public string GUID { get; set; } + // ʵ ID + public int ExpID { get; set; } + // ɼ + public int score { get; set; } + // ־λĬֵ true + public bool flag { get; set; } + // ʵ鲽б + public Expstepvtwolist[] ExpStepVTwoList { get; set; } + } + + public class Expstepvtwolist + { + // ʵ鲽 + public int seq { get; set; } + // ʵ鲽 + public string ExpStepName = ""; + // ʵ鲽״̬ + public string StepState = ""; + // ʵ鲽迪ʼʱ + public DateTime startTime = default; + // ʵ鲽ʱ + public DateTime endTime = default; + // ʵ鲽ʱλ + public int expectTime = 0; + // ʵ鲽֣0 ~100ٷ + public int maxScore = 100; + // ʵ鲽÷֣0 ~100ٷ + public int score = 0; + // ʵ鲽 + public int repeatCount = 1; + // ۣ200 + public string evaluation = ""; + // ģͣ200 + public string scoringModel = ""; + // ע + public string remarks { get; set; } + } + + public class Response + { + public string msg; + public bool success; + } } -public class UploadData -{ - public string GUID { get; set; } - // ʵ ID - public int ExpID { get; set; } - // ɼ - public int score { get; set; } - // ־λĬֵ true - public bool flag { get; set; } - // ʵ鲽б - public Expstepvtwolist[] ExpStepVTwoList { get; set; } -} - -public class Expstepvtwolist -{ - // ʵ鲽 - public int seq { get; set; } - // ʵ鲽 - public string ExpStepName = ""; - // ʵ鲽״̬ - public string StepState = ""; - // ʵ鲽迪ʼʱ - public DateTime startTime = default; - // ʵ鲽ʱ - public DateTime endTime = default; - // ʵ鲽ʱλ - public int expectTime = 0; - // ʵ鲽֣0 ~100ٷ - public int maxScore = 100; - // ʵ鲽÷֣0 ~100ٷ - public int score = 0; - // ʵ鲽 - public int repeatCount = 1; - // ۣ200 - public string evaluation = ""; - // ģͣ200 - public string scoringModel = ""; - // ע - public string remarks { get; set; } -} - -public class Response -{ - public string msg; - public bool success; -} \ No newline at end of file diff --git a/Assets/WebPlatform/Scripts/WebGLHelper.cs.meta b/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs.meta similarity index 100% rename from Assets/WebPlatform/Scripts/WebGLHelper.cs.meta rename to Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs.meta diff --git a/Assets/WebPlatform/Scripts.meta b/Assets/WebPlatform/Scripts.meta deleted file mode 100644 index 978d3f73..00000000 --- a/Assets/WebPlatform/Scripts.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b8dbba4c57255fc4495c422b41445cbe -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: From 2ae75e1664089d9e7680a14cc812b68f6b2e6294 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Wed, 9 Apr 2025 15:46:56 +0800 Subject: [PATCH 02/28] =?UTF-8?q?=E4=BF=AE=E6=94=B9web=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LYTWebGL.meta} | 3 +- .../LYTWebGL/RSA.txt} | 0 Assets/Resources/LYTWebGL/RSA.txt.meta | 7 ++++ Assets/Scripts/UI/UIScore.cs | 2 +- Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs | 42 ++++++++++++------- Assets/WebPlatform/WebTest.cs | 23 ++++++++++ Assets/WebPlatform/WebTest.cs.meta | 11 +++++ 7 files changed, 71 insertions(+), 17 deletions(-) rename Assets/{WebPlatform/LaiYiTe/Resrouces/RSA.Private.meta => Resources/LYTWebGL.meta} (67%) rename Assets/{WebPlatform/LaiYiTe/Resrouces/RSA.Private => Resources/LYTWebGL/RSA.txt} (100%) create mode 100644 Assets/Resources/LYTWebGL/RSA.txt.meta create mode 100644 Assets/WebPlatform/WebTest.cs create mode 100644 Assets/WebPlatform/WebTest.cs.meta diff --git a/Assets/WebPlatform/LaiYiTe/Resrouces/RSA.Private.meta b/Assets/Resources/LYTWebGL.meta similarity index 67% rename from Assets/WebPlatform/LaiYiTe/Resrouces/RSA.Private.meta rename to Assets/Resources/LYTWebGL.meta index 288425aa..bc2681ad 100644 --- a/Assets/WebPlatform/LaiYiTe/Resrouces/RSA.Private.meta +++ b/Assets/Resources/LYTWebGL.meta @@ -1,5 +1,6 @@ fileFormatVersion: 2 -guid: 72fe0ae24cde45946914fa10b54896b0 +guid: d0622dae4bc2b2a4d937ad88a765e87a +folderAsset: yes DefaultImporter: externalObjects: {} userData: diff --git a/Assets/WebPlatform/LaiYiTe/Resrouces/RSA.Private b/Assets/Resources/LYTWebGL/RSA.txt similarity index 100% rename from Assets/WebPlatform/LaiYiTe/Resrouces/RSA.Private rename to Assets/Resources/LYTWebGL/RSA.txt diff --git a/Assets/Resources/LYTWebGL/RSA.txt.meta b/Assets/Resources/LYTWebGL/RSA.txt.meta new file mode 100644 index 00000000..4c11c38c --- /dev/null +++ b/Assets/Resources/LYTWebGL/RSA.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fa05fa85bd33f6c4ca626c1e0317d53d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/UIScore.cs b/Assets/Scripts/UI/UIScore.cs index 69eb0643..25e192ed 100644 --- a/Assets/Scripts/UI/UIScore.cs +++ b/Assets/Scripts/UI/UIScore.cs @@ -121,7 +121,7 @@ namespace QFramework.Example sum += float.Parse(item.Value.sum); score += item.Value.value; stepNames.Add(item.Value.step + item.Value.name); - maxScore.Add(int.Parse(item.Value.sum)); + maxScore.Add((int)float.Parse(item.Value.sum)); scores.Add((int)item.Value.value); } } diff --git a/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs b/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs index 1cd7c801..3f82b5fd 100644 --- a/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs +++ b/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs @@ -11,21 +11,22 @@ using UnityEngine; using UnityEngine.Events; using UnityEngine.Networking; -public class LYTWebGLHelper : Singleton +public class LYTWebGLHelper : MonoSingleton { private LYTWebGLHelper() { } public class LabData { public string GUID; public string ExpID; - public string HOST; + public string HOST = string.Empty; public string PARA1; public string PARA; public string PARA2; } +#if UNITY_WEBGL [DllImport("__Internal")] private static extern string GetURLParameter(string name); - +#endif string token = string.Empty; LabData labData = new LabData(); @@ -35,19 +36,27 @@ public class LYTWebGLHelper : Singleton public string uploadUrl; + private void Awake() + { + Init(); + } public void Init() { +#if UNITY_WEBGL&&!UNITY_EDITOR token = GetURLParameter("token").Replace("%2B", "+"); - RSA = Resources.Load("RSA"); - string urlData = Decrypt(token); - var datas = urlData.Split("&"); - labData.GUID = datas[0]; - labData.ExpID = datas[1]; - labData.HOST = datas[2]; - labData.PARA1 = datas[3]; - labData.PARA = datas[4]; - labData.PARA2 = datas[5]; - +#endif + RSA = Resources.Load("LYTWebGL/RSA"); + if (string.IsNullOrEmpty(token) == false) + { + string urlData = Decrypt(token); + var datas = urlData.Split("&"); + labData.GUID = datas[0]; + labData.ExpID = datas[1]; + labData.HOST = datas[2]; + labData.PARA1 = datas[3]; + labData.PARA = datas[4]; + labData.PARA2 = datas[5]; + } uploadUrl = Path.Combine(labData.HOST, "host/public/Exp/AddScore/"); } /// @@ -87,7 +96,9 @@ public class LYTWebGLHelper : Singleton { var data = new UploadData(); data.GUID = labData.GUID; - data.ExpID = int.Parse(labData.ExpID); + int expId = 0; + int.TryParse(labData.ExpID, out expId); + data.ExpID = expId; data.score = totalScore; data.flag = true; @@ -101,7 +112,7 @@ public class LYTWebGLHelper : Singleton } data.ExpStepVTwoList = list.ToArray(); - SendScore(JsonConvert.SerializeObject(data)); + StartCoroutine(SendScore(JsonConvert.SerializeObject(data))); } IEnumerator SendScore(string json, UnityAction action = null) @@ -122,6 +133,7 @@ public class LYTWebGLHelper : Singleton if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError) { + Debug.LogError($"Upload failed: {request.uri}"); Debug.LogError($"Upload failed: {request.error}"); Debug.LogError($"Response Code: {request.responseCode}"); } diff --git a/Assets/WebPlatform/WebTest.cs b/Assets/WebPlatform/WebTest.cs new file mode 100644 index 00000000..9e5a181e --- /dev/null +++ b/Assets/WebPlatform/WebTest.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class WebTest : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + List stepNames = new List() { "һ", "ڶ", "" }; + List maxScore = new List() { 10, 20, 30 }; + List score = new List() { 5, 10, 15 }; + LYTWebGLHelper.Instance.UpLoadData(60, stepNames, maxScore, score); + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/WebPlatform/WebTest.cs.meta b/Assets/WebPlatform/WebTest.cs.meta new file mode 100644 index 00000000..86bcbfe0 --- /dev/null +++ b/Assets/WebPlatform/WebTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 08f51ad357b70604492d4c3e95ce1e27 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From bb0925b8730dd91593197b7b6fb6770652883467 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Thu, 10 Apr 2025 09:31:37 +0800 Subject: [PATCH 03/28] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=8E=B1=E5=8C=BB?= =?UTF-8?q?=E7=89=B9=E5=B9=B3=E5=8F=B0=E5=AF=B9=E6=8E=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs | 21 +++++++++++++++---- .../Plugins/WebGL/GetParameters.jslib | 18 +++++++++++----- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs b/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs index 3f82b5fd..1607d79a 100644 --- a/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs +++ b/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs @@ -25,7 +25,7 @@ public class LYTWebGLHelper : MonoSingleton } #if UNITY_WEBGL [DllImport("__Internal")] - private static extern string GetURLParameter(string name); + private static extern IntPtr GetURLParameter(string name); #endif string token = string.Empty; @@ -42,9 +42,21 @@ public class LYTWebGLHelper : MonoSingleton } public void Init() { -#if UNITY_WEBGL&&!UNITY_EDITOR - token = GetURLParameter("token").Replace("%2B", "+"); +#if UNITY_WEBGL && !UNITY_EDITOR + + var paramPtr = GetURLParameter("token"); + if (paramPtr != IntPtr.Zero) + { + string value = Marshal.PtrToStringUTF8(paramPtr); + //token = value.Replace("%2B", "+"); + token = value.Replace(" ", "+"); + Marshal.FreeHGlobal(paramPtr); // ͷŷڴ + } + Debug.LogError("ȡģ" + token); #endif + + + RSA = Resources.Load("LYTWebGL/RSA"); if (string.IsNullOrEmpty(token) == false) { @@ -109,6 +121,7 @@ public class LYTWebGLHelper : MonoSingleton step.ExpStepName = stepNames[i]; step.maxScore = maxScore[i]; step.score = score[i]; + list.Add(step); } data.ExpStepVTwoList = list.ToArray(); @@ -122,7 +135,7 @@ public class LYTWebGLHelper : MonoSingleton Debug.LogError("ϴӿڵַ:" + uploadUrl); yield break; } - + Debug.LogError("ϴ:" + json); using (UnityWebRequest request = new UnityWebRequest(uploadUrl, "POST")) { request.SetRequestHeader("Content-Type", "application/json"); diff --git a/Assets/WebPlatform/Plugins/WebGL/GetParameters.jslib b/Assets/WebPlatform/Plugins/WebGL/GetParameters.jslib index a460273f..5a076284 100644 --- a/Assets/WebPlatform/Plugins/WebGL/GetParameters.jslib +++ b/Assets/WebPlatform/Plugins/WebGL/GetParameters.jslib @@ -1,9 +1,17 @@ -// 名为 "URLParameters.jslib" 的插件文件 mergeInto(LibraryManager.library, { GetURLParameter: function (name) { - var search = window.location.search.substring(1); - var params = new URLSearchParams(search); - var value = params.get(name); - return value ? Pointer_stringify(value) : null; + const paramName = UTF8ToString(name); + const search = window.location.search.substring(1); + const params = new URLSearchParams(search); + const value = params.get(paramName); + console.log('GetURLParameter:', value); + + if (value) { + var buffer = _malloc((value.length + 1) * 2); + stringToUTF8(value, buffer, (value.length + 1) * 2); + return buffer; + } else { + return 0; + } } }); \ No newline at end of file From ce2ccad0e0904751097797e0b89f32097f0432eb Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Thu, 10 Apr 2025 09:35:01 +0800 Subject: [PATCH 04/28] =?UTF-8?q?=E5=85=81=E8=AE=B8http=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectSettings/ProjectSettings.asset | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 130e523f..5b47eca4 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -970,4 +970,4 @@ PlayerSettings: hmiLoadingImage: {fileID: 0} platformRequiresReadableAssets: 0 virtualTexturingSupportEnabled: 0 - insecureHttpOption: 0 + insecureHttpOption: 2 From 4a78da1f201e945f5795e313dd37ab0e402c9b57 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Mon, 21 Apr 2025 09:59:18 +0800 Subject: [PATCH 05/28] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=96=B0=E5=A2=9E=E8=87=AA=E5=8A=A8=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/Controller/ScoreController.cs | 27 ++++++++ Assets/Scripts/Tools/AsposeHelper.cs | 73 ++++++++++++++++---- Assets/Scripts/UI/UIScore.cs | 12 ++-- Assets/Scripts/Xml/XmlParser.cs | 4 ++ 4 files changed, 93 insertions(+), 23 deletions(-) diff --git a/Assets/Scripts/Controller/ScoreController.cs b/Assets/Scripts/Controller/ScoreController.cs index 5a31979b..546d008c 100644 --- a/Assets/Scripts/Controller/ScoreController.cs +++ b/Assets/Scripts/Controller/ScoreController.cs @@ -1,7 +1,9 @@ +using Newtonsoft.Json; using QFramework; using System; using System.Collections; using System.Collections.Generic; +using System.Runtime.CompilerServices; using TMPro; using UnityEngine; using UnityEngine.SocialPlatforms.Impl; @@ -48,6 +50,29 @@ public class ScoreController : MonoSingleton } + public string GetModuleDictJson(string name = "") + { + var resultDict = new Dictionary(); + resultDict.Add("name", name); + foreach (var dataPair in moduleDict) + { + var data = dataPair.Value; + if (data.scoreDict != null) + { + foreach (var scoreStepPair in data.scoreDict) + { + var scoreStep = scoreStepPair.Value; + string key = $"{scoreStep.step}{scoreStep.name}"; + resultDict[key] = scoreStep.value; + + resultDict.Add(key + "Time", string.IsNullOrEmpty(scoreStep.time) == true ? "" : scoreStep.time); + } + } + } + + return JsonConvert.SerializeObject(resultDict); + } + private void OnStart(OnModuleStart start) { @@ -84,6 +109,8 @@ public class ScoreController : MonoSingleton { scoreDict[key].value = 0; } + DateTime currentTime = DateTime.Now; + scoreDict[key].time = currentTime.ToString(scoreDict[key].timeFormat); } else { diff --git a/Assets/Scripts/Tools/AsposeHelper.cs b/Assets/Scripts/Tools/AsposeHelper.cs index 2fdf7b4a..14300c27 100644 --- a/Assets/Scripts/Tools/AsposeHelper.cs +++ b/Assets/Scripts/Tools/AsposeHelper.cs @@ -9,34 +9,77 @@ public class AsposeHelper : MonoBehaviour { + //public static void Writer(string json, Action callback = null) + //{ + // // Wordĵ + // Document doc = new Document(Global.reportDemoPath); + + // JObject jObject = JObject.Parse(json); + + // foreach (JProperty property in jObject.Properties()) + // { + // string key = property.Name; + // string value = property.Value.ToString(); + // doc.Range.Replace($"{{{key}}}", $"{value}", new FindReplaceOptions()); + // } + + // string filePath = ChinarFileController.SaveProject(Path.GetFileName(Global.reportDemoPath).Split('.')[1]); + // if (string.IsNullOrEmpty(filePath) == false) + // { + // doc.Save(filePath); + // } + // callback?.Invoke(); + // // 滻ı + // //SaveWithDialog(doc, callback); + // //Debug.Log("ĵɣĵѱ浽: " + outputFilePath); + //} + public static void Writer(string json, Action callback = null) { // Wordĵ Document doc = new Document(Global.reportDemoPath); - JObject jObject = JObject.Parse(json); - - foreach (JProperty property in jObject.Properties()) - { - string key = property.Name; - string value = property.Value.ToString(); - doc.Range.Replace($"{{{key}}}", $"{value}", new FindReplaceOptions()); - } + JToken jToken = JToken.Parse(json); + TraverseAndReplace(jToken, doc); string filePath = ChinarFileController.SaveProject(Path.GetFileName(Global.reportDemoPath).Split('.')[1]); - if (string.IsNullOrEmpty(filePath) == false) + if (!string.IsNullOrEmpty(filePath)) { doc.Save(filePath); } callback?.Invoke(); - // 滻ı - //SaveWithDialog(doc, callback); - //Debug.Log("ĵɣĵѱ浽: " + outputFilePath); - - - } + private static void TraverseAndReplace(JToken jToken, Document doc) + { + if (jToken.Type == JTokenType.Object) + { + foreach (JProperty property in ((JObject)jToken).Properties()) + { + if (property.Value.Type == JTokenType.Object || property.Value.Type == JTokenType.Array) + { + TraverseAndReplace(property.Value, doc); + } + else + { + string key = property.Name; + string value = property.Value.ToString(); + doc.Range.Replace($"{{{key}}}", $"{value}", new FindReplaceOptions()); + } + } + } + else if (jToken.Type == JTokenType.Array) + { + foreach (JToken item in jToken) + { + TraverseAndReplace(item, doc); + } + } + } + + + + //private static void SaveWithDialog(Document doc, Action callback) //{ // SaveFileDialog dialog = new SaveFileDialog(); diff --git a/Assets/Scripts/UI/UIScore.cs b/Assets/Scripts/UI/UIScore.cs index 25e192ed..41a5b380 100644 --- a/Assets/Scripts/UI/UIScore.cs +++ b/Assets/Scripts/UI/UIScore.cs @@ -58,11 +58,7 @@ namespace QFramework.Example public string GetScoreDataJson() { - var data = new LabReprotData(); - data.realname = InputName.text; - data.biaobencaiji_1_buzhou_1 = "[1111]"; - string json = JsonConvert.SerializeObject(data); - return json; + return ScoreController.Instance.GetModuleDictJson(InputName.text); } @@ -131,9 +127,9 @@ namespace QFramework.Example this.Score.text = score.ToString(); this.Sum.text = sum.ToString(); -//#if UNITY_WEBGL -// LYTWebGLHelper.Instance.UpLoadData((int)score, stepNames, maxScore, scores); -//#endif + //#if UNITY_WEBGL + // LYTWebGLHelper.Instance.UpLoadData((int)score, stepNames, maxScore, scores); + //#endif } protected override void OnShow() diff --git a/Assets/Scripts/Xml/XmlParser.cs b/Assets/Scripts/Xml/XmlParser.cs index bc81aa7b..2dfa2d9f 100644 --- a/Assets/Scripts/Xml/XmlParser.cs +++ b/Assets/Scripts/Xml/XmlParser.cs @@ -1,5 +1,6 @@ using QFramework; using QFramework.Example; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -73,6 +74,8 @@ namespace XMLTool public string sum; public string bind; public float value; + public string time; + public string timeFormat = "yyyy-MM-dd HH:mm:ss"; } @@ -431,6 +434,7 @@ namespace XMLTool name = item.Attribute("name")?.Value, sum = item.Attribute("sum")?.Value, bind = item.Attribute("bind")?.Value, + timeFormat = item.Attribute("timeFormat")?.Value, }); } } From 4a25c334d1daf2206445cdf212bf1430ae8b4eba Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Mon, 21 Apr 2025 10:03:46 +0800 Subject: [PATCH 06/28] =?UTF-8?q?=E5=AE=8C=E5=96=84=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Doc/Xml配置文档.xml | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/Doc/Xml配置文档.xml b/Doc/Xml配置文档.xml index b10f67ff..9d4c7bb3 100644 --- a/Doc/Xml配置文档.xml +++ b/Doc/Xml配置文档.xml @@ -294,22 +294,24 @@ - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + From ac5421d899352ed1ff3b3fdb25c6b5ba5e383ad8 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Wed, 23 Apr 2025 10:01:05 +0800 Subject: [PATCH 07/28] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/Editor/FixedMainEditor.cs | 24 +++ Assets/Scripts/Editor/TimerLock.cs | 11 ++ Assets/Scripts/Editor/TimerLock.cs.meta | 11 ++ Assets/Scripts/Editor/VirtualFPostProcess.cs | 32 +++- Assets/Scripts/Tools/ZXKLicenses.meta | 8 + .../Scripts/Tools/ZXKLicenses/Encryption.meta | 8 + .../ZXKLicenses/Encryption/DateManager.cs | 88 +++++++++ .../Encryption/DateManager.cs.meta | 11 ++ .../Encryption/DecryptFileReader.cs | 44 +++++ .../Encryption/DecryptFileReader.cs.meta | 11 ++ .../Encryption/EncryptFileCreator.cs | 56 ++++++ .../Encryption/EncryptFileCreator.cs.meta | 11 ++ .../Scripts/Tools/ZXKLicenses/HttpRestful.cs | 73 +++++++ .../Tools/ZXKLicenses/HttpRestful.cs.meta | 11 ++ Assets/Scripts/Tools/ZXKLicenses/Licence.meta | 8 + .../Tools/ZXKLicenses/Licence/LicenceData.cs | 46 +++++ .../ZXKLicenses/Licence/LicenceData.cs.meta | 11 ++ .../ZXKLicenses/Licence/LicenseManager.cs | 180 ++++++++++++++++++ .../Licence/LicenseManager.cs.meta | 11 ++ 19 files changed, 653 insertions(+), 2 deletions(-) create mode 100644 Assets/Scripts/Editor/TimerLock.cs create mode 100644 Assets/Scripts/Editor/TimerLock.cs.meta create mode 100644 Assets/Scripts/Tools/ZXKLicenses.meta create mode 100644 Assets/Scripts/Tools/ZXKLicenses/Encryption.meta create mode 100644 Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs create mode 100644 Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs.meta create mode 100644 Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs create mode 100644 Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs.meta create mode 100644 Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs create mode 100644 Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs.meta create mode 100644 Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs create mode 100644 Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs.meta create mode 100644 Assets/Scripts/Tools/ZXKLicenses/Licence.meta create mode 100644 Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs create mode 100644 Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs.meta create mode 100644 Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs create mode 100644 Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs.meta diff --git a/Assets/Scripts/Editor/FixedMainEditor.cs b/Assets/Scripts/Editor/FixedMainEditor.cs index 44d2fa2c..568d4eee 100644 --- a/Assets/Scripts/Editor/FixedMainEditor.cs +++ b/Assets/Scripts/Editor/FixedMainEditor.cs @@ -1,3 +1,6 @@ +using QFramework; +using System; +using System.IO; using UnityEditor; using UnityEngine; @@ -31,5 +34,26 @@ public class FixedMainEditor Menu.SetChecked("Tools/ǿMain", isFixedMain); return true; } + + + + [MenuItem("Tools/ʱ")] + private static void TimerLock() + { + //Դļ + //Ǽ̳ScriptableObject + TimerLock asset = ScriptableObject.CreateInstance(); + //ǰһԴֻǴڴУҪ浽 + //ͨ༭APIһԴļڶΪԴļAssetsĿ¼µ· + AssetDatabase.CreateAsset(asset, "Assets/TimerLock.asset"); + //洴Դ + AssetDatabase.SaveAssets(); + //ˢ½ + AssetDatabase.Refresh(); + } + + + + } #endif \ No newline at end of file diff --git a/Assets/Scripts/Editor/TimerLock.cs b/Assets/Scripts/Editor/TimerLock.cs new file mode 100644 index 00000000..a7482a9f --- /dev/null +++ b/Assets/Scripts/Editor/TimerLock.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[CreateAssetMenu(fileName = "ʱ", menuName = "ʱ/ļ")] +public class TimerLock : ScriptableObject +{ + [Header("Ч")] + public string time; + +} diff --git a/Assets/Scripts/Editor/TimerLock.cs.meta b/Assets/Scripts/Editor/TimerLock.cs.meta new file mode 100644 index 00000000..d412f066 --- /dev/null +++ b/Assets/Scripts/Editor/TimerLock.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3fa014c2238b5a942b96b9f55a3f9841 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Editor/VirtualFPostProcess.cs b/Assets/Scripts/Editor/VirtualFPostProcess.cs index a687e3f0..a6d39e6f 100644 --- a/Assets/Scripts/Editor/VirtualFPostProcess.cs +++ b/Assets/Scripts/Editor/VirtualFPostProcess.cs @@ -29,6 +29,34 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport Debug.LogWarning("δҵĿ¼: " + dataFolderPath); } DeletAssetBundle(buildOutputPath); + + // ʱ + GneratorTimerLock(); + } + + /// + /// ʱļ + /// + public void GneratorTimerLock() + { + if (File.Exists(Application.dataPath + "/TimerLock.asset")) + { + string path = "Assets/TimerLock.asset"; + var asset = AssetDatabase.LoadAssetAtPath(path); + if (asset != null) + { + if (string.IsNullOrEmpty(asset.time) == false) + { + //һλȡȡϵͳʱ + DateTime currentDateTime = DateTime.Now; + string RecordData = currentDateTime.ToString("yyyy-MM-dd HH:mm:ss"); + string strMerge = asset.time + "|" + RecordData; + EncryptFileCreator.EncryptAndSaveData(strMerge, "Timer.txt"); + } + } + } + + } /// @@ -64,7 +92,7 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport Debug.LogError($"Directory not found: {path}"); } } - else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows|| EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows64) + else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows || EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows64) { string path = Path.Combine(buildOutPutPath, "VirtualFramwork_Data", "StreamingAssets", "AssetBundles"); if (Directory.Exists(path)) @@ -92,7 +120,7 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport Debug.LogError($"Directory not found: {path}"); } } - + } diff --git a/Assets/Scripts/Tools/ZXKLicenses.meta b/Assets/Scripts/Tools/ZXKLicenses.meta new file mode 100644 index 00000000..2dfa7e11 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4fec87e21a9630c46b1a6ef7dec72ea6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption.meta b/Assets/Scripts/Tools/ZXKLicenses/Encryption.meta new file mode 100644 index 00000000..65aade6d --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb335401f53d3c94490f449b410da1ba +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs new file mode 100644 index 00000000..24f60bc0 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs @@ -0,0 +1,88 @@ +using System; +using System.IO; +using UnityEngine; +using UnityEngine.Events; + +public class DateManager : MonoBehaviour +{ + private string EndTimer;//结束时间 + private string RecordData; + private void Start() + { + UpdateTime(); + } + + /// + /// 更新系统时间 + /// + public void UpdateTime(UnityAction back1 = null, UnityAction back2 = null, UnityAction back3 = null) + { + try + { + string datas = DecryptFileReader.ReadAndDecryptData("Timer.txt"); + EndTimer = datas.Split('|')[0]; + RecordData = datas.Split('|')[1]; + //第一次获取获取系统时间 + DateTime currentDateTime = DateTime.Now; + string Data = currentDateTime.ToString("yyyy-MM-dd HH:mm:ss"); + if (DateTime.TryParse(RecordData, out DateTime recordDateTime) && DateTime.TryParse(Data, out DateTime nowDateTime)) + { + if (recordDateTime > nowDateTime) + { + Debug.Log("仿真文件被损坏,请联系管理员进行修复"); + back1?.Invoke(); + } + else + { + //把上一次存储得系统时间更新到最新 + string timer = "Timer.txt"; + RecordData = Data; + string strMerge = EndTimer + "|" + RecordData; + EncryptFileCreator.EncryptAndSaveData(strMerge, timer); + back3?.Invoke(); + } + } + } + catch (Exception e) + { + Debug.LogError($"数据出错: {e.Message}"); + back1?.Invoke(); + } + + if (JudgeExpire()) + { + Debug.Log("请联系管理员进行升级"); + back2?.Invoke(); + } + } + + /// + /// 判断是否到期 + /// + /// + public bool JudgeExpire() + { + if (DateTime.TryParse(EndTimer, out DateTime endDataTime) && DateTime.TryParse(RecordData, out DateTime recordDateTime)) + { + //结束日期小于目前日期代表到期 + if (endDataTime < recordDateTime) + { + return true; + } + } + return false; + } + + + /// + /// 给客户打包的时候,需要设置EndTimer,然后运行一次生成文件并注释掉 + /// + public void CreatTimer() + { + //第一次获取获取系统时间 + DateTime currentDateTime = DateTime.Now; + RecordData = currentDateTime.ToString("yyyy-MM-dd HH:mm:ss"); + string strMerge = EndTimer + "|" + RecordData; + EncryptFileCreator.EncryptAndSaveData(strMerge, "Timer.txt"); + } +} diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs.meta b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs.meta new file mode 100644 index 00000000..604aec1b --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 718cf7f3f1b16f141ab751a37af8cae1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs new file mode 100644 index 00000000..9a68c1bb --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs @@ -0,0 +1,44 @@ +using System.IO; +using System.Security.Cryptography; +using System.Text; +using UnityEngine; + +public class DecryptFileReader +{ + private static byte[] key = Encoding.UTF8.GetBytes("Sixteen byte key"); // 加密密钥,需与加密时一致 + private static byte[] iv = Encoding.UTF8.GetBytes("InitializationVe"); // 确保IV长度为16字节 + + public static string ReadAndDecryptData(string filePath) + { + string fullPath = Path.Combine(Application.streamingAssetsPath, filePath); + if (File.Exists(fullPath) == false) + { + return ""; + } + // 读取加密文件 + byte[] encryptedData = File.ReadAllBytes(fullPath); + + // 创建AES解密器 + using (Aes aesAlg = Aes.Create()) + { + aesAlg.Key = key; + aesAlg.IV = iv; + + ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); + + // 创建内存流和加密流 + using (MemoryStream msDecrypt = new MemoryStream(encryptedData)) + { + using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) + { + byte[] decryptedBytes = new byte[encryptedData.Length]; + int decryptedByteCount = csDecrypt.Read(decryptedBytes, 0, decryptedBytes.Length); + + // 将解密后的数据转换为字符串 + string decryptedData = Encoding.UTF8.GetString(decryptedBytes, 0, decryptedByteCount); + return decryptedData; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs.meta b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs.meta new file mode 100644 index 00000000..a4452c9b --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 354bc54210a77764ebad2d49b5e927ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs new file mode 100644 index 00000000..e19b7f24 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs @@ -0,0 +1,56 @@ +using System.IO; +using System.Security.Cryptography; +using System.Text; +using UnityEngine; + +public class EncryptFileCreator +{ + private static byte[] key = Encoding.UTF8.GetBytes("Sixteen byte key"); // 加密密钥,需16字节 + private static byte[] iv = Encoding.UTF8.GetBytes("InitializationVe"); // 确保IV长度为16字节 + + public static void EncryptAndSaveData(string data,string path) + { + string filePath = Path.Combine(Application.streamingAssetsPath, path); + if (!File.Exists(filePath)) + { + try + { + // 创建文件 + File.WriteAllText(filePath, ""); + Debug.Log("文件已创建"); + } + catch (IOException e) + { + Debug.LogError($"创建文件时出错: {e.Message}"); + } + } + // 将数据转换为字节数组 + byte[] plainText = Encoding.UTF8.GetBytes(data); + + // 创建AES加密器 + using (Aes aesAlg = Aes.Create()) + { + aesAlg.Key = key; + aesAlg.IV = iv; + + ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); + + // 创建内存流和加密流 + using (MemoryStream msEncrypt = new MemoryStream()) + { + using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) + { + csEncrypt.Write(plainText, 0, plainText.Length); + csEncrypt.FlushFinalBlock(); + + // 获取加密后的数据 + byte[] encryptedData = msEncrypt.ToArray(); + + // 保存加密文件到StreamingAssets文件夹 + string fullPath = Path.Combine(Application.streamingAssetsPath, filePath); + File.WriteAllBytes(fullPath, encryptedData); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs.meta b/Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs.meta new file mode 100644 index 00000000..77d8e4b9 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 22f7660ba2e708d4eb33622fe324499b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs b/Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs new file mode 100644 index 00000000..dd538b34 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs @@ -0,0 +1,73 @@ +using QFramework; +using System; +using System.Collections; +using UnityEngine; +using UnityEngine.Networking; + +public class HttpRestful : MonoSingleton +{ + public void Get(string url, Action actionResult = null) + { + StartCoroutine(_Get(url, actionResult)); + } + + private IEnumerator _Get(string url, Action action) + { + using (UnityWebRequest request = UnityWebRequest.Get(url)) + { + yield return request.SendWebRequest(); + + string resstr = ""; + if (request.isNetworkError || request.isHttpError) + { + resstr = request.error; + } + else + { + resstr = request.downloadHandler.text; + } + + if (action != null) + { + action(request.isHttpError, resstr); + } + } + } + public void Post(string url, string form, Action callBack, string Header = null, string HeaderValue = null, int timeOut = 3) + { + + StartCoroutine(_Post(url, form, callBack, Header, HeaderValue, timeOut)); + } + + public IEnumerator _Post(string url, string form, Action callBack, string Header = null, string HeaderValue = null, int timeOut = 3) + { + //请求链接,并将form对象发送到远程服务器 + using (UnityWebRequest webRequest = UnityWebRequest.Post(url, form, "application/json"))//;charset=utf-8 + { + if (!string.IsNullOrEmpty(Header) && !string.IsNullOrEmpty(HeaderValue)) + { + webRequest.SetRequestHeader(Header, HeaderValue); + } + webRequest.timeout = timeOut * 1000; + yield return webRequest.SendWebRequest(); + if (webRequest.result!= UnityWebRequest.Result.Success) + { + Debug.Log(webRequest.error); + callBack?.Invoke(false, webRequest.downloadHandler); + } + else + { + callBack?.Invoke(true, webRequest.downloadHandler); + } + //if (webRequest.isHttpError || webRequest.isNetworkError) + //{ + // //Debug.LogError("==========="); + // callBack?.Invoke(false, null); + //} + //else + //{ + // callBack?.Invoke(true, webRequest.downloadHandler); + //} + }; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs.meta b/Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs.meta new file mode 100644 index 00000000..2fa9020e --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cca16177d7a134a43a4fb3320d5b8fc7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Licence.meta b/Assets/Scripts/Tools/ZXKLicenses/Licence.meta new file mode 100644 index 00000000..a4c0b9c7 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Licence.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 32677377141e60248a7a2484825ce1d4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs new file mode 100644 index 00000000..d84ee2c5 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LicenceData +{ + public string project_id; + public string user_name; + public string license_code; + public string host_id; + public string duration; //使用时长 + public string sign; +} +public class Datas +{ + public static string Project_id = "7"; + public static string secretKey = "pZNwkYoMRp7MG_O7aGtmA"; + public static string UserName; + public static string Licensecode; + public static string Hostid; + public static int Duration;//持续时间 +} +[Serializable] +public class License +{ + public int id; + public string user_name; + public string license_code; + public int is_authorized; + public string host_id; + public string authorization_at; + public string authorization_end_at; + public string created_at; + public int login_count; + public int duration; + public string last_login; +} + +[Serializable] +public class LicenseValidationResponse +{ + public string status; + public string message; + public License license; +} \ No newline at end of file diff --git a/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs.meta b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs.meta new file mode 100644 index 00000000..de5c59a7 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f40d10c2dcbad941ac179b38fde96bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs new file mode 100644 index 00000000..0246d5db --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs @@ -0,0 +1,180 @@ +using Newtonsoft.Json; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Net.NetworkInformation; +using System.Security.Cryptography; +using System.Text; +using UnityEngine; + +public class LicenseManager : MonoBehaviour +{ + private Dictionary Data = new(); + private LicenseValidationResponse LicenseRes = new LicenseValidationResponse(); + private string Hostid = ""; + + public void Init() + { + Hostid = GetPhysicalAddress(); + Datas.Hostid = Hostid; + } + public LicenceData GetLicenceData(string projectid, string userName, string licensecode, string hostid, int duration) + { + Data.Clear(); + LicenceData licence = new LicenceData(); + licence.project_id = projectid; + licence.user_name = userName; + licence.license_code = licensecode; + licence.host_id = hostid; + licence.duration = duration.ToString(); + if (!Data.ContainsKey("project_id")) + { + Data.Add("project_id", licence.project_id); + } + if (!Data.ContainsKey("user_name")) + { + Data.Add("user_name", licence.user_name); + } + if (!Data.ContainsKey("license_code")) + { + Data.Add("license_code", licence.license_code); + } + if (!Data.ContainsKey("host_id")) + { + Data.Add("host_id", licence.host_id); + } + if (!Data.ContainsKey("duration")) + { + Data.Add("duration", licence.duration); + } + licence.sign = GenerateSignature(Datas.secretKey, Data); + return licence; + } + /// + /// 请求 + /// + /// + /// + public void LicensePost(Action callBack = null) + { + LicenceData licence = GetLicenceData(Datas.Project_id, Datas.UserName, Datas.Licensecode, Datas.Hostid, Datas.Duration); + + string json = JsonConvert.SerializeObject(licence); + HttpRestful.Instance.Post("https://locallicense.zxkedu.com/api/license/validate/", json, (m, n) => + { + JsonConvert.DeserializeObject(n.text); + if (LicenseRes.status == "success") + { + EncryptedFile(); + } + callBack.Invoke(m); + }); + } + + /// + /// 生成密匙 + /// + /// + /// + /// + public string GenerateSignature(string secretKey, Dictionary data) + { + // 添加当前时间戳 + //string timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString(); + //获取当前时间戳并四舍五入到最近的分钟 + long timestamp = (long)(DateTimeOffset.UtcNow.ToUnixTimeSeconds() / 60) * 60; + //long timestamp = (long)(GetTimestamp() / 60) * 60; + if (!data.ContainsKey("timestamp")) + { + data.Add("timestamp", timestamp.ToString()); + } + else + { + data["timestamp"] = timestamp.ToString(); + } + // 对键值对进行排序 + var sortedData = data.OrderBy(kvp => kvp.Key); + Debug.Log("sortedData对键值对进行排序:" + sortedData); + + // 构建查询字符串 + string queryString = string.Join("&", sortedData.Select(kvp => $"{kvp.Key}={kvp.Value}")); + Debug.Log("queryString构建查询字符串:" + queryString); + // 使用HMAC-SHA256生成签名 + using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(secretKey))) + { + byte[] hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(queryString)); + Debug.Log("生成签名:" + BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant()); + return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant(); + } + } + + public void StartSetDuration() + { + if (gameObject.activeSelf) + { + StartCoroutine(SetDuration(60f)); + } + } + + IEnumerator SetDuration(float times) + { + while (true) + { + yield return new WaitForSeconds(times); + Datas.Duration++; + LicensePost(); + Datas.Duration = 0; + } + } + public string GetMachineGuid() + { + if (string.IsNullOrEmpty(Hostid)) + { + NetworkInterface[] nis = NetworkInterface.GetAllNetworkInterfaces(); + foreach (NetworkInterface ni in nis) + { + if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || + ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet) + { + Hostid = ni.GetPhysicalAddress().ToString(); + break; + } + } + } + return Hostid; + } + + string GetPhysicalAddress() + { + //string physicalAddress = ""; + //NetworkInterface[] nis = NetworkInterface.GetAllNetworkInterfaces(); + //foreach (NetworkInterface ni in nis) + //{ + // if (ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet && ni.OperationalStatus == OperationalStatus.Up) + // { + // physicalAddress = ni.GetPhysicalAddress().ToString(); + // break; + // } + //} + return SystemInfo.deviceUniqueIdentifier; + } + + /// + /// 本地存储Hostid + /// + public void EncryptedFile() + { + string dataToEncrypt = Datas.UserName + "|" + Datas.Licensecode + "|"; + EncryptFileCreator.EncryptAndSaveData(dataToEncrypt, "encryptedData.txt"); + } + /// + /// 读取Hostid + /// + /// + public string ReadDecryptedFile() + { + string decryptedData = DecryptFileReader.ReadAndDecryptData("encryptedData.txt"); + return decryptedData; + } +} diff --git a/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs.meta b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs.meta new file mode 100644 index 00000000..b85899a3 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 13a2f840c2d90a44b8473ca7cf9adef1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From c9f3add8a353104518f0495eb36ed9796193acb8 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Wed, 23 Apr 2025 10:12:42 +0800 Subject: [PATCH 08/28] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scenes/Main.unity | 850 ++++++++++++++++++ .../ZXKLicenses/Encryption/DateManager.cs | 30 +- 2 files changed, 874 insertions(+), 6 deletions(-) diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index 4e3c1859..8f07b9aa 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -765,6 +765,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 376402498555991245} + - {fileID: 2066511179} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -939,6 +940,54 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &2066511178 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2066511179} + - component: {fileID: 2066511180} + m_Layer: 0 + m_Name: UIDateCheck + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2066511179 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066511178} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -960, y: -540, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 888371916723674439} + m_Father: {fileID: 1269024859} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2066511180 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066511178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 718cf7f3f1b16f141ab751a37af8cae1, type: 3} + m_Name: + m_EditorClassIdentifier: + ui: {fileID: 2089839050043354719} + text: {fileID: 4601331229292980818} + btn: {fileID: 7231834583498103603} --- !u!1 &2114935602 GameObject: m_ObjectHideFlags: 0 @@ -1098,6 +1147,40 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7258947687994042621} m_CullTransparentMesh: 1 +--- !u!114 &110887888300473105 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3921544984887548570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 436 + m_MinHeight: 43 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &187303085634958717 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086965462285735655} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 2 --- !u!224 &376402498555991245 RectTransform: m_ObjectHideFlags: 0 @@ -1118,6 +1201,34 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &457648689321205319 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086965462285735655} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 436 + m_MinHeight: 183 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &525492089466544073 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5681206649821475691} + m_CullTransparentMesh: 1 --- !u!114 &755439116886819988 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1148,6 +1259,26 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!224 &888371916723674439 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089839050043354719} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7622962939547687553} + m_Father: {fileID: 2066511179} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &902241654539185805 RectTransform: m_ObjectHideFlags: 0 @@ -1189,6 +1320,36 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 238, y: 176} m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1128038912698321512 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7245332692720103295} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.5019608} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!114 &1504961720473882854 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1205,6 +1366,56 @@ MonoBehaviour: CustomComponentName: Icon CustomComment: mComponentName: UnityEngine.UI.Image +--- !u!1 &1671880619992264758 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2521152647019992497} + - component: {fileID: 6681216128200013423} + - component: {fileID: 1813275364079888314} + - component: {fileID: 7231834583498103603} + - component: {fileID: 6180712463440446537} + m_Layer: 5 + m_Name: BtnPrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1813275364079888314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671880619992264758} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: fa63ae52e51e2064390c2a75c12f664c, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!114 &1982103501701676502 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1313,6 +1524,93 @@ MonoBehaviour: optionalScrambleMode: 0 optionalShakeRandomnessMode: 0 optionalString: +--- !u!222 &1988465934601991813 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7245332692720103295} + m_CullTransparentMesh: 1 +--- !u!1 &2086965462285735655 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3877370567018537602} + - component: {fileID: 4239072621578749216} + - component: {fileID: 7937913353350945267} + - component: {fileID: 2814462432456552503} + - component: {fileID: 187303085634958717} + - component: {fileID: 457648689321205319} + m_Layer: 5 + m_Name: Connnet + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &2089839050043354719 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 888371916723674439} + - component: {fileID: 7923541361196308593} + - component: {fileID: 4452057681510801829} + m_Layer: 5 + m_Name: UITipWindow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2521152647019992497 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671880619992264758} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6623231731764336771} + m_Father: {fileID: 2655579637452759910} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 128.1478, y: 41.656} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &2655579637452759910 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4656565024652926694} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2521152647019992497} + m_Father: {fileID: 3877370567018537602} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &2802739808984475110 CanvasRenderer: m_ObjectHideFlags: 0 @@ -1321,6 +1619,155 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7740213339686398260} m_CullTransparentMesh: 1 +--- !u!114 &2814462432456552503 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086965462285735655} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 20 + m_Right: 20 + m_Top: 20 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 1 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &3325917066968789983 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5681206649821475691} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u786E\u5B9A" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 97936a7b3a86809479ac89371e95b079, type: 2} + m_sharedMaterial: {fileID: 168401102475399263, guid: 97936a7b3a86809479ac89371e95b079, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 16 + m_fontSizeBase: 16 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 8192 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &3425016141668694121 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4656565024652926694} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 15 + m_ChildAlignment: 4 + m_Spacing: 22 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!222 &3576997835000597077 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3921544984887548570} + m_CullTransparentMesh: 1 --- !u!1 &3604560447573429497 GameObject: m_ObjectHideFlags: 0 @@ -1350,6 +1797,71 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: cabec804a45ce1941b8c1895f35d2860, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!114 &3841773505581629585 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3921544984887548570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: Label + CustomComment: + mComponentName: TMPro.TextMeshProUGUI +--- !u!224 &3877370567018537602 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086965462285735655} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6349304297074725759} + - {fileID: 2655579637452759910} + m_Father: {fileID: 7622962939547687553} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 91.49997} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.99999994} +--- !u!1 &3921544984887548570 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6349304297074725759} + - component: {fileID: 3576997835000597077} + - component: {fileID: 4601331229292980818} + - component: {fileID: 110887888300473105} + - component: {fileID: 3841773505581629585} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!222 &4239072621578749216 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086965462285735655} + m_CullTransparentMesh: 1 --- !u!222 &4329888169046837703 CanvasRenderer: m_ObjectHideFlags: 0 @@ -1358,6 +1870,37 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5754390454264469586} m_CullTransparentMesh: 1 +--- !u!114 &4444983099252657014 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4656565024652926694} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: BtnContent + CustomComment: + mComponentName: RectTransform +--- !u!114 &4452057681510801829 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089839050043354719} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cadc477eb7be81c4b899b49b072235bd, type: 3} + m_Name: + m_EditorClassIdentifier: + Label: {fileID: 4601331229292980818} + BtnContent: {fileID: 2655579637452759910} + BtnPrefab: {fileID: 7231834583498103603} --- !u!114 &4467067367704618080 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1374,6 +1917,113 @@ MonoBehaviour: CustomComponentName: Label CustomComment: mComponentName: TMPro.TextMeshProUGUI +--- !u!114 &4601331229292980818 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3921544984887548570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u662F\u5426\u9000\u51FA\u5F53\u524D\u6A21\u5757\uFF1F" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 97936a7b3a86809479ac89371e95b079, type: 2} + m_sharedMaterial: {fileID: 168401102475399263, guid: 97936a7b3a86809479ac89371e95b079, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4656565024652926694 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2655579637452759910} + - component: {fileID: 3425016141668694121} + - component: {fileID: 4444983099252657014} + m_Layer: 5 + m_Name: BtnContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!224 &5548267066476286416 RectTransform: m_ObjectHideFlags: 0 @@ -1393,6 +2043,24 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 25} m_SizeDelta: {x: 0, y: 50} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &5681206649821475691 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6623231731764336771} + - component: {fileID: 525492089466544073} + - component: {fileID: 3325917066968789983} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &5754390454264469586 GameObject: m_ObjectHideFlags: 0 @@ -1430,6 +2098,68 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!114 &6180712463440446537 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671880619992264758} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: BtnPrefab + CustomComment: + mComponentName: UnityEngine.UI.Button +--- !u!224 &6349304297074725759 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3921544984887548570} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3877370567018537602} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &6623231731764336771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5681206649821475691} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2521152647019992497} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6681216128200013423 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671880619992264758} + m_CullTransparentMesh: 1 --- !u!114 &6979315384717970559 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1468,6 +2198,68 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5773262138564131193} m_CullTransparentMesh: 1 +--- !u!114 &7231834583498103603 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671880619992264758} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 2 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 21300000, guid: 8c77a2052664d0d4e9be892444deddd1, type: 3} + m_SelectedSprite: {fileID: 21300000, guid: 8c77a2052664d0d4e9be892444deddd1, type: 3} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1813275364079888314} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &7245332692720103295 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7622962939547687553} + - component: {fileID: 1988465934601991813} + - component: {fileID: 1128038912698321512} + m_Layer: 5 + m_Name: Mask + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &7258947687994042621 GameObject: m_ObjectHideFlags: 0 @@ -1486,6 +2278,26 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!224 &7622962939547687553 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7245332692720103295} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3877370567018537602} + m_Father: {fileID: 888371916723674439} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &7740213339686398260 GameObject: m_ObjectHideFlags: 0 @@ -1525,6 +2337,44 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 23.5} m_SizeDelta: {x: 51, y: 51} m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7923541361196308593 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089839050043354719} + m_CullTransparentMesh: 1 +--- !u!114 &7937913353350945267 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086965462285735655} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 003fddd8e0543224fb849ccdbb422cd6, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!114 &8704027912026391313 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs index 24f60bc0..0633c317 100644 --- a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs @@ -1,21 +1,39 @@ using System; using System.IO; +using TMPro; using UnityEngine; using UnityEngine.Events; +using UnityEngine.UI; public class DateManager : MonoBehaviour { private string EndTimer;//结束时间 private string RecordData; + public GameObject ui; + public TextMeshProUGUI text; + public Button btn; + private void Awake() + { + btn.onClick.AddListener(() => + { + Application.Quit(); + }); + UpdateTime(ShowTip, ShowTip); + } private void Start() { - UpdateTime(); + } + + public void ShowTip(string str) + { + ui.SetActive(true); + text.text = str; } /// /// 更新系统时间 /// - public void UpdateTime(UnityAction back1 = null, UnityAction back2 = null, UnityAction back3 = null) + public void UpdateTime(UnityAction error = null, UnityAction timeOut = null, UnityAction updateTimer = null) { try { @@ -30,7 +48,7 @@ public class DateManager : MonoBehaviour if (recordDateTime > nowDateTime) { Debug.Log("仿真文件被损坏,请联系管理员进行修复"); - back1?.Invoke(); + error?.Invoke("仿真文件被损坏,请联系管理员进行修复"); } else { @@ -39,20 +57,20 @@ public class DateManager : MonoBehaviour RecordData = Data; string strMerge = EndTimer + "|" + RecordData; EncryptFileCreator.EncryptAndSaveData(strMerge, timer); - back3?.Invoke(); + updateTimer?.Invoke(); } } } catch (Exception e) { Debug.LogError($"数据出错: {e.Message}"); - back1?.Invoke(); + error?.Invoke($"数据出错: {e.Message}"); } if (JudgeExpire()) { Debug.Log("请联系管理员进行升级"); - back2?.Invoke(); + timeOut?.Invoke("请联系管理员进行升级"); } } From 4ce0b3e9cb46ad00a023780482fbad2430400597 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Wed, 23 Apr 2025 10:15:28 +0800 Subject: [PATCH 09/28] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs index 0633c317..97a8c72c 100644 --- a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs @@ -14,15 +14,13 @@ public class DateManager : MonoBehaviour public Button btn; private void Awake() { + ui.gameObject.SetActive(false); btn.onClick.AddListener(() => { Application.Quit(); }); UpdateTime(ShowTip, ShowTip); } - private void Start() - { - } public void ShowTip(string str) { From fcdbf4c29cd08befa61fa9b7622debc1f33ebfef Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Wed, 23 Apr 2025 10:18:30 +0800 Subject: [PATCH 10/28] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scenes/Main.unity | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index 8f07b9aa..5790e9e2 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -750,7 +750,7 @@ Canvas: m_AdditionalShaderChannelsFlag: 25 m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 - m_SortingOrder: 0 + m_SortingOrder: 500 m_TargetDisplay: 0 --- !u!224 &1269024859 RectTransform: @@ -765,7 +765,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 376402498555991245} - - {fileID: 2066511179} + - {fileID: 1764640267} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -940,7 +940,7 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &2066511178 +--- !u!1 &1764640266 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -948,8 +948,8 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 2066511179} - - component: {fileID: 2066511180} + - component: {fileID: 1764640267} + - component: {fileID: 1764640268} m_Layer: 0 m_Name: UIDateCheck m_TagString: Untagged @@ -957,29 +957,33 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &2066511179 -Transform: +--- !u!224 &1764640267 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2066511178} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -960, y: -540, z: 0} + m_GameObject: {fileID: 1764640266} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - {fileID: 888371916723674439} m_Father: {fileID: 1269024859} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &2066511180 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1764640268 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2066511178} + m_GameObject: {fileID: 1764640266} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 718cf7f3f1b16f141ab751a37af8cae1, type: 3} @@ -1266,18 +1270,18 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2089839050043354719} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7622962939547687553} - m_Father: {fileID: 2066511179} + m_Father: {fileID: 1764640267} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} + m_SizeDelta: {x: -1920, y: -1080} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &902241654539185805 RectTransform: From 672ddd6570e92cc5415d8b8d4b6c2fabdecad01f Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Wed, 23 Apr 2025 10:32:17 +0800 Subject: [PATCH 11/28] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scenes/Main.unity | 69 +++------------------------------------- 1 file changed, 4 insertions(+), 65 deletions(-) diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index 5790e9e2..03aa07af 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -969,7 +969,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 888371916723674439} + - {fileID: 7622962939547687553} m_Father: {fileID: 1269024859} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -989,7 +989,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 718cf7f3f1b16f141ab751a37af8cae1, type: 3} m_Name: m_EditorClassIdentifier: - ui: {fileID: 2089839050043354719} + ui: {fileID: 0} text: {fileID: 4601331229292980818} btn: {fileID: 7231834583498103603} --- !u!1 &2114935602 @@ -1263,26 +1263,6 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 ---- !u!224 &888371916723674439 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2089839050043354719} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 7622962939547687553} - m_Father: {fileID: 1764640267} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -1920, y: -1080} - m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &902241654539185805 RectTransform: m_ObjectHideFlags: 0 @@ -1557,24 +1537,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!1 &2089839050043354719 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 888371916723674439} - - component: {fileID: 7923541361196308593} - - component: {fileID: 4452057681510801829} - m_Layer: 5 - m_Name: UITipWindow - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 --- !u!224 &2521152647019992497 RectTransform: m_ObjectHideFlags: 0 @@ -1890,21 +1852,6 @@ MonoBehaviour: CustomComponentName: BtnContent CustomComment: mComponentName: RectTransform ---- !u!114 &4452057681510801829 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2089839050043354719} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: cadc477eb7be81c4b899b49b072235bd, type: 3} - m_Name: - m_EditorClassIdentifier: - Label: {fileID: 4601331229292980818} - BtnContent: {fileID: 2655579637452759910} - BtnPrefab: {fileID: 7231834583498103603} --- !u!114 &4467067367704618080 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2289,13 +2236,13 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7245332692720103295} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3877370567018537602} - m_Father: {fileID: 888371916723674439} + m_Father: {fileID: 1764640267} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2341,14 +2288,6 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 23.5} m_SizeDelta: {x: 51, y: 51} m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7923541361196308593 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2089839050043354719} - m_CullTransparentMesh: 1 --- !u!114 &7937913353350945267 MonoBehaviour: m_ObjectHideFlags: 0 From 988b770b16ad94c522aa96d417c897e3e93c5857 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Wed, 23 Apr 2025 10:37:52 +0800 Subject: [PATCH 12/28] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scenes/Main.unity | 4 ++-- .../Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index 03aa07af..863a3a0c 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -989,7 +989,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 718cf7f3f1b16f141ab751a37af8cae1, type: 3} m_Name: m_EditorClassIdentifier: - ui: {fileID: 0} + ui: {fileID: 7245332692720103295} text: {fileID: 4601331229292980818} btn: {fileID: 7231834583498103603} --- !u!1 &2114935602 @@ -1317,7 +1317,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.5019608} + m_Color: {r: 0, g: 0, b: 0, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs index 97a8c72c..9dc0b2d9 100644 --- a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs @@ -19,7 +19,10 @@ public class DateManager : MonoBehaviour { Application.Quit(); }); - UpdateTime(ShowTip, ShowTip); + UpdateTime(ShowTip, ShowTip, () => + { + gameObject.SetActive(false); + }); } public void ShowTip(string str) @@ -36,6 +39,10 @@ public class DateManager : MonoBehaviour try { string datas = DecryptFileReader.ReadAndDecryptData("Timer.txt"); + if (string.IsNullOrEmpty(datas)) + { + updateTimer?.Invoke(); + } EndTimer = datas.Split('|')[0]; RecordData = datas.Split('|')[1]; //第一次获取获取系统时间 From 71418f2ac1bdc82258c4982d6e98677312b8d896 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Wed, 23 Apr 2025 11:45:50 +0800 Subject: [PATCH 13/28] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E9=94=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/Editor/FixedMainEditor.cs | 23 +++++++++++++++++++ Assets/Scripts/Editor/VirtualFPostProcess.cs | 18 +++++++++++---- .../ZXKLicenses/Encryption/DateManager.cs | 4 ++++ 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/Assets/Scripts/Editor/FixedMainEditor.cs b/Assets/Scripts/Editor/FixedMainEditor.cs index 568d4eee..be177835 100644 --- a/Assets/Scripts/Editor/FixedMainEditor.cs +++ b/Assets/Scripts/Editor/FixedMainEditor.cs @@ -52,6 +52,29 @@ public class FixedMainEditor AssetDatabase.Refresh(); } + [MenuItem("Tools/Timerļ")] + private static void GeneratorTimer() + { + if (File.Exists(Application.dataPath + "/TimerLock.asset")) + { + string path = "Assets/TimerLock.asset"; + var asset = AssetDatabase.LoadAssetAtPath(path); + if (asset != null) + { + if (string.IsNullOrEmpty(asset.time) == false) + { + //һλȡȡϵͳʱ + DateTime currentDateTime = DateTime.Now; + string RecordData = currentDateTime.ToString("yyyy-MM-dd HH:mm:ss"); + string strMerge = asset.time + "|" + RecordData; + EncryptFileCreator.EncryptAndSaveData(strMerge, "Timer.txt"); + } + } + } + //ˢ½ + AssetDatabase.Refresh(); + } + diff --git a/Assets/Scripts/Editor/VirtualFPostProcess.cs b/Assets/Scripts/Editor/VirtualFPostProcess.cs index a6d39e6f..d84b64ab 100644 --- a/Assets/Scripts/Editor/VirtualFPostProcess.cs +++ b/Assets/Scripts/Editor/VirtualFPostProcess.cs @@ -7,10 +7,20 @@ using UnityEditor.Build; using UnityEditor.Build.Reporting; using UnityEngine; -public class VirtualFPostProcess : IPostprocessBuildWithReport +public class VirtualFPostProcess : IPostprocessBuildWithReport, IPreprocessBuildWithReport { public int callbackOrder => 0; + /// + /// ǰʱ + /// + /// + public void OnPreprocessBuild(BuildReport report) + { + // ʱ + GneratorTimerLock(); + } + public void OnPostprocessBuild(BuildReport report) { string projectPath = Application.dataPath; @@ -29,9 +39,7 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport Debug.LogWarning("δҵĿ¼: " + dataFolderPath); } DeletAssetBundle(buildOutputPath); - - // ʱ - GneratorTimerLock(); + AssetDatabase.Refresh(); } /// @@ -173,4 +181,6 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport } return new string(chars); } + + } \ No newline at end of file diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs index 9dc0b2d9..3dfcd51f 100644 --- a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs @@ -27,6 +27,7 @@ public class DateManager : MonoBehaviour public void ShowTip(string str) { + gameObject.SetActive(true); ui.SetActive(true); text.text = str; } @@ -42,6 +43,7 @@ public class DateManager : MonoBehaviour if (string.IsNullOrEmpty(datas)) { updateTimer?.Invoke(); + return; } EndTimer = datas.Split('|')[0]; RecordData = datas.Split('|')[1]; @@ -70,12 +72,14 @@ public class DateManager : MonoBehaviour { Debug.LogError($"数据出错: {e.Message}"); error?.Invoke($"数据出错: {e.Message}"); + return; } if (JudgeExpire()) { Debug.Log("请联系管理员进行升级"); timeOut?.Invoke("请联系管理员进行升级"); + return; } } From 00b308544f2d9d24bde194c7ccd3ce8977ed0561 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Wed, 23 Apr 2025 14:00:54 +0800 Subject: [PATCH 14/28] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs | 5 ----- .../Tools/ZXKLicenses/Encryption/DecryptFileReader.cs | 5 +---- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs index 3dfcd51f..f8a93a76 100644 --- a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs @@ -40,11 +40,6 @@ public class DateManager : MonoBehaviour try { string datas = DecryptFileReader.ReadAndDecryptData("Timer.txt"); - if (string.IsNullOrEmpty(datas)) - { - updateTimer?.Invoke(); - return; - } EndTimer = datas.Split('|')[0]; RecordData = datas.Split('|')[1]; //第一次获取获取系统时间 diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs index 9a68c1bb..1c6d60f5 100644 --- a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs @@ -11,10 +11,7 @@ public class DecryptFileReader public static string ReadAndDecryptData(string filePath) { string fullPath = Path.Combine(Application.streamingAssetsPath, filePath); - if (File.Exists(fullPath) == false) - { - return ""; - } + if (File.Exists(filePath)) return ""; // 读取加密文件 byte[] encryptedData = File.ReadAllBytes(fullPath); From 04e725d4d59f7d83a6eead09d819180fbf969055 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Thu, 24 Apr 2025 14:54:32 +0800 Subject: [PATCH 15/28] =?UTF-8?q?web=E4=BD=BF=E7=94=A8=E8=8E=B1=E5=8C=BB?= =?UTF-8?q?=E7=89=B9=E5=B9=B3=E5=8F=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/Controller/ScoreController.cs | 3 -- .../ZXKLicenses/Encryption/DateManager.cs | 35 ++++++++++++++-- .../Encryption/DecryptFileReader.cs | 6 +++ Assets/Scripts/UI/UIScore.cs | 41 +++++++++++++------ Assets/StreamingAssets/Timer.txt | 1 + Assets/StreamingAssets/Timer.txt.meta | 7 ++++ Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs | 34 ++++++++------- 7 files changed, 94 insertions(+), 33 deletions(-) create mode 100644 Assets/StreamingAssets/Timer.txt create mode 100644 Assets/StreamingAssets/Timer.txt.meta diff --git a/Assets/Scripts/Controller/ScoreController.cs b/Assets/Scripts/Controller/ScoreController.cs index 546d008c..32a51452 100644 --- a/Assets/Scripts/Controller/ScoreController.cs +++ b/Assets/Scripts/Controller/ScoreController.cs @@ -1,12 +1,9 @@ using Newtonsoft.Json; using QFramework; using System; -using System.Collections; using System.Collections.Generic; -using System.Runtime.CompilerServices; using TMPro; using UnityEngine; -using UnityEngine.SocialPlatforms.Impl; using XMLTool; public class ScoreController : MonoSingleton diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs index f8a93a76..bf304845 100644 --- a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs @@ -1,8 +1,10 @@ using System; +using System.Collections; using System.IO; using TMPro; using UnityEngine; using UnityEngine.Events; +using UnityEngine.Networking; using UnityEngine.UI; public class DateManager : MonoBehaviour @@ -19,10 +21,14 @@ public class DateManager : MonoBehaviour { Application.Quit(); }); - UpdateTime(ShowTip, ShowTip, () => +#if UNITY_WEBGL + StartCoroutine(WebUpdateTime()); +#else + UpdateTime(DecryptFileReader.ReadAndDecryptData("Timer.txt"), ShowTip, ShowTip, () => { gameObject.SetActive(false); }); +#endif } public void ShowTip(string str) @@ -32,14 +38,35 @@ public class DateManager : MonoBehaviour text.text = str; } + public IEnumerator WebUpdateTime() + { + string path = Path.Combine(Application.streamingAssetsPath, "Timer.txt"); + using (UnityWebRequest request = new UnityWebRequest(path)) + { + request.downloadHandler = new DownloadHandlerBuffer(); + yield return request.SendWebRequest(); + if (string.IsNullOrEmpty(request.error)) + { + string datas = DecryptFileReader.ReadAndDecryptData(request.downloadHandler.data); + UpdateTime(datas, ShowTip, ShowTip, () => + { + gameObject.SetActive(false); + }); + } + else + { + Debug.LogError(request.error); + } + } + } + /// /// 更新系统时间 /// - public void UpdateTime(UnityAction error = null, UnityAction timeOut = null, UnityAction updateTimer = null) + public void UpdateTime(string datas, UnityAction error = null, UnityAction timeOut = null, UnityAction updateTimer = null) { try { - string datas = DecryptFileReader.ReadAndDecryptData("Timer.txt"); EndTimer = datas.Split('|')[0]; RecordData = datas.Split('|')[1]; //第一次获取获取系统时间 @@ -54,11 +81,13 @@ public class DateManager : MonoBehaviour } else { +#if !UNITY_WEBGL //把上一次存储得系统时间更新到最新 string timer = "Timer.txt"; RecordData = Data; string strMerge = EndTimer + "|" + RecordData; EncryptFileCreator.EncryptAndSaveData(strMerge, timer); +#endif updateTimer?.Invoke(); } } diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs index 1c6d60f5..744b1ab2 100644 --- a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs @@ -14,6 +14,12 @@ public class DecryptFileReader if (File.Exists(filePath)) return ""; // 读取加密文件 byte[] encryptedData = File.ReadAllBytes(fullPath); + return ReadAndDecryptData(encryptedData); + } + + + public static string ReadAndDecryptData(byte[] encryptedData) + { // 创建AES解密器 using (Aes aesAlg = Aes.Create()) diff --git a/Assets/Scripts/UI/UIScore.cs b/Assets/Scripts/UI/UIScore.cs index 41a5b380..4ef7f346 100644 --- a/Assets/Scripts/UI/UIScore.cs +++ b/Assets/Scripts/UI/UIScore.cs @@ -1,7 +1,9 @@ using Newtonsoft.Json; +using System; using System.Collections.Generic; using TMPro; using UnityEngine; +using static LYTWebGLHelper; namespace QFramework.Example { @@ -84,9 +86,9 @@ namespace QFramework.Example onlyCur = mData.onlyCurModule; } - List stepNames = new List(); - List maxScore = new List(); - List scores = new List(); + + List datas = new List(); + int seq = 0; if (onlyCur) { foreach (var item in ScoreController.Instance.GetCurScoreData()) @@ -98,9 +100,16 @@ namespace QFramework.Example obj.transform.Find("Score").GetComponent().text = item.Value.value.ToString(); sum += float.Parse(item.Value.sum); score += item.Value.value; - stepNames.Add(item.Value.step + item.Value.name); - maxScore.Add(int.Parse(item.Value.sum)); - scores.Add((int)item.Value.value); + datas.Add(new Expstepvtwolist() + { + ExpStepName = item.Value.step + item.Value.name, + maxScore = int.Parse(item.Value.sum), + score = (int)item.Value.value, + startTime = item.Value.time, + endTime = item.Value.time, + seq = seq, + }); + seq++; } } else @@ -116,9 +125,16 @@ namespace QFramework.Example obj.transform.Find("Score").GetComponent().text = item.Value.value.ToString(); sum += float.Parse(item.Value.sum); score += item.Value.value; - stepNames.Add(item.Value.step + item.Value.name); - maxScore.Add((int)float.Parse(item.Value.sum)); - scores.Add((int)item.Value.value); + datas.Add(new Expstepvtwolist() + { + ExpStepName = item.Value.step + item.Value.name, + maxScore = int.Parse(item.Value.sum), + score = (int)item.Value.value, + startTime = item.Value.time, + endTime = item.Value.time, + seq = seq + }); + seq++; } } } @@ -127,9 +143,10 @@ namespace QFramework.Example this.Score.text = score.ToString(); this.Sum.text = sum.ToString(); - //#if UNITY_WEBGL - // LYTWebGLHelper.Instance.UpLoadData((int)score, stepNames, maxScore, scores); - //#endif +#if UNITY_WEBGL + + LYTWebGLHelper.Instance.UpLoadData((int)score, datas.ToArray()); +#endif } protected override void OnShow() diff --git a/Assets/StreamingAssets/Timer.txt b/Assets/StreamingAssets/Timer.txt new file mode 100644 index 00000000..a2dd3e38 --- /dev/null +++ b/Assets/StreamingAssets/Timer.txt @@ -0,0 +1 @@ +ILBJ05 lF)#BȲUv}]u.\G \ No newline at end of file diff --git a/Assets/StreamingAssets/Timer.txt.meta b/Assets/StreamingAssets/Timer.txt.meta new file mode 100644 index 00000000..884fc80c --- /dev/null +++ b/Assets/StreamingAssets/Timer.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9b4029b9b6235264f8d2594721eb300a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs b/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs index 1607d79a..56356007 100644 --- a/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs +++ b/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs @@ -69,7 +69,7 @@ public class LYTWebGLHelper : MonoSingleton labData.PARA = datas[4]; labData.PARA2 = datas[5]; } - uploadUrl = Path.Combine(labData.HOST, "host/public/Exp/AddScore/"); + uploadUrl = Path.Combine(labData.HOST, "public/Exp/AddScore/"); } /// /// Decrypts encrypted text given a RSA private key file path.· RSA ˽Կļ @@ -104,8 +104,12 @@ public class LYTWebGLHelper : MonoSingleton - public void UpLoadData(int totalScore, List stepNames, List maxScore, List score) + public void UpLoadData(int totalScore, Expstepvtwolist[] datas) { + if (string.IsNullOrEmpty(labData.GUID)) + { + return; + } var data = new UploadData(); data.GUID = labData.GUID; int expId = 0; @@ -113,17 +117,17 @@ public class LYTWebGLHelper : MonoSingleton data.ExpID = expId; data.score = totalScore; data.flag = true; - - var list = new List(); - for (int i = 0; i < stepNames.Count; i++) - { - var step = new Expstepvtwolist(); - step.ExpStepName = stepNames[i]; - step.maxScore = maxScore[i]; - step.score = score[i]; - list.Add(step); - } - data.ExpStepVTwoList = list.ToArray(); + //var list = new List(); + //for (int i = 0; i < stepNames.Count; i++) + //{ + // var step = new Expstepvtwolist(); + // step.ExpStepName = stepNames[i]; + // step.maxScore = maxScore[i]; + // step.score = score[i]; + // step.seq = i + 1; + // list.Add(step); + //} + data.ExpStepVTwoList = datas; StartCoroutine(SendScore(JsonConvert.SerializeObject(data))); } @@ -185,9 +189,9 @@ public class LYTWebGLHelper : MonoSingleton // ʵ鲽״̬ public string StepState = ""; // ʵ鲽迪ʼʱ - public DateTime startTime = default; + public string startTime; // ʵ鲽ʱ - public DateTime endTime = default; + public string endTime; // ʵ鲽ʱλ public int expectTime = 0; // ʵ鲽֣0 ~100ٷ From 9a7b789463dc1eadf6c87d6326d59d18240ae622 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Thu, 24 Apr 2025 15:02:36 +0800 Subject: [PATCH 16/28] =?UTF-8?q?=E5=88=A0=E6=8E=89=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/WebPlatform/WebTest.cs | 23 ----------------------- Assets/WebPlatform/WebTest.cs.meta | 11 ----------- 2 files changed, 34 deletions(-) delete mode 100644 Assets/WebPlatform/WebTest.cs delete mode 100644 Assets/WebPlatform/WebTest.cs.meta diff --git a/Assets/WebPlatform/WebTest.cs b/Assets/WebPlatform/WebTest.cs deleted file mode 100644 index 9e5a181e..00000000 --- a/Assets/WebPlatform/WebTest.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class WebTest : MonoBehaviour -{ - // Start is called before the first frame update - void Start() - { - - List stepNames = new List() { "һ", "ڶ", "" }; - List maxScore = new List() { 10, 20, 30 }; - List score = new List() { 5, 10, 15 }; - LYTWebGLHelper.Instance.UpLoadData(60, stepNames, maxScore, score); - - } - - // Update is called once per frame - void Update() - { - - } -} diff --git a/Assets/WebPlatform/WebTest.cs.meta b/Assets/WebPlatform/WebTest.cs.meta deleted file mode 100644 index 86bcbfe0..00000000 --- a/Assets/WebPlatform/WebTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 08f51ad357b70604492d4c3e95ce1e27 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: From 33a5c245a49f880f58e897ff9ff9c82097c08fea Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Thu, 24 Apr 2025 15:57:46 +0800 Subject: [PATCH 17/28] =?UTF-8?q?=E9=BB=98=E8=AE=A4seq=E4=BB=8E1=E5=BC=80?= =?UTF-8?q?=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/UI/UIScore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/Scripts/UI/UIScore.cs b/Assets/Scripts/UI/UIScore.cs index 4ef7f346..aa6f96cc 100644 --- a/Assets/Scripts/UI/UIScore.cs +++ b/Assets/Scripts/UI/UIScore.cs @@ -88,7 +88,7 @@ namespace QFramework.Example List datas = new List(); - int seq = 0; + int seq = 1; if (onlyCur) { foreach (var item in ScoreController.Instance.GetCurScoreData()) From cb23a56bb09b5cb9e9a175f6ac84473a7bbd0b81 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Sun, 27 Apr 2025 11:41:11 +0800 Subject: [PATCH 18/28] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Art/UIPrefab/UIImageSelectMap.prefab | 1555 +++++++++++++++++ .../Art/UIPrefab/UIImageSelectMap.prefab.meta | 7 + .../TestUIPanels/TestUIImageSelectMap.unity | 975 +++++++++++ .../TestUIImageSelectMap.unity.meta | 7 + Assets/Scripts/Actions/ActionBase.cs | 13 + Assets/Scripts/Actions/ActionHelper.cs | 5 + .../Scripts/Actions/ImageSelectMapAction.cs | 115 ++ .../Actions/ImageSelectMapAction.cs.meta | 3 + Assets/Scripts/Tools/WaterfallScrollView.cs | 361 ++++ .../Scripts/Tools/WaterfallScrollView.cs.meta | 11 + .../Scripts/UI/UIImageSelectMap.Designer.cs | 55 + .../UI/UIImageSelectMap.Designer.cs.meta | 11 + Assets/Scripts/UI/UIImageSelectMap.cs | 90 + Assets/Scripts/UI/UIImageSelectMap.cs.meta | 11 + Assets/Scripts/Xml/XmlParser.cs | 55 + 15 files changed, 3274 insertions(+) create mode 100644 Assets/Art/UIPrefab/UIImageSelectMap.prefab create mode 100644 Assets/Art/UIPrefab/UIImageSelectMap.prefab.meta create mode 100644 Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity create mode 100644 Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity.meta create mode 100644 Assets/Scripts/Actions/ImageSelectMapAction.cs create mode 100644 Assets/Scripts/Actions/ImageSelectMapAction.cs.meta create mode 100644 Assets/Scripts/Tools/WaterfallScrollView.cs create mode 100644 Assets/Scripts/Tools/WaterfallScrollView.cs.meta create mode 100644 Assets/Scripts/UI/UIImageSelectMap.Designer.cs create mode 100644 Assets/Scripts/UI/UIImageSelectMap.Designer.cs.meta create mode 100644 Assets/Scripts/UI/UIImageSelectMap.cs create mode 100644 Assets/Scripts/UI/UIImageSelectMap.cs.meta diff --git a/Assets/Art/UIPrefab/UIImageSelectMap.prefab b/Assets/Art/UIPrefab/UIImageSelectMap.prefab new file mode 100644 index 00000000..a5078f91 --- /dev/null +++ b/Assets/Art/UIPrefab/UIImageSelectMap.prefab @@ -0,0 +1,1555 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1456779776075396423 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8684970269249796938} + - component: {fileID: 5747189872396141135} + - component: {fileID: 8183197324225808335} + - component: {fileID: 8791239955636502620} + m_Layer: 0 + m_Name: Scrollbar Horizontal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8684970269249796938 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456779776075396423} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1053974557369902190} + m_Father: {fileID: 8195176150318222682} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 0, y: 0} +--- !u!222 &5747189872396141135 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456779776075396423} + m_CullTransparentMesh: 1 +--- !u!114 &8183197324225808335 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456779776075396423} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8791239955636502620 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456779776075396423} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3902461113349703364} + m_HandleRect: {fileID: 7471371802902961118} + m_Direction: 0 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1679127656931134385 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5789014425176515348} + - component: {fileID: 4674184409838659037} + - component: {fileID: 6234933970462649390} + - component: {fileID: 5462896160065121143} + m_Layer: 0 + m_Name: RightItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5789014425176515348 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1679127656931134385} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8333043509333940129} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4674184409838659037 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1679127656931134385} + m_CullTransparentMesh: 1 +--- !u!114 &6234933970462649390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1679127656931134385} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &5462896160065121143 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1679127656931134385} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: LeftItem + CustomComment: + mComponentName: UnityEngine.UI.Image +--- !u!1 &1729038058009787836 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1053974557369902190} + m_Layer: 0 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1053974557369902190 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1729038058009787836} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7471371802902961118} + m_Father: {fileID: 8684970269249796938} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1742335434038873139 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8333043509333940129} + m_Layer: 0 + m_Name: prefabs + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8333043509333940129 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742335434038873139} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5065642014798611877} + - {fileID: 5789014425176515348} + m_Father: {fileID: 3838833872239473580} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2832418877224820397 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6584298779789211397} + m_Layer: 0 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6584298779789211397 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2832418877224820397} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8048533352694695708} + m_Father: {fileID: 2525946039026654729} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3581311008806056906 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1318390635077869678} + - component: {fileID: 929900596444975903} + - component: {fileID: 3128808900450456013} + - component: {fileID: 1757905451630621577} + m_Layer: 0 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1318390635077869678 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3581311008806056906} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6336473892143704609} + m_Father: {fileID: 4103523224226093892} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &929900596444975903 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3581311008806056906} + m_CullTransparentMesh: 1 +--- !u!114 &3128808900450456013 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3581311008806056906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1757905451630621577 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3581311008806056906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!1 &3680065591560334169 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4103523224226093892} + - component: {fileID: 2989934290346154672} + - component: {fileID: 6966479315727637165} + - component: {fileID: 5702230170007598446} + m_Layer: 0 + m_Name: Left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4103523224226093892 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680065591560334169} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1318390635077869678} + - {fileID: 394787390200614376} + m_Father: {fileID: 3838833872239473580} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 336.29443, y: 0} + m_SizeDelta: {x: 672.5889, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2989934290346154672 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680065591560334169} + m_CullTransparentMesh: 1 +--- !u!114 &6966479315727637165 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680065591560334169} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &5702230170007598446 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680065591560334169} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 6336473892143704609} + m_Horizontal: 1 + m_Vertical: 1 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 1318390635077869678} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 1324067570812135091} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &4024388799813096854 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5065642014798611877} + - component: {fileID: 2953680020842013688} + - component: {fileID: 5092658527967839279} + - component: {fileID: 3958728393826437956} + m_Layer: 0 + m_Name: LeftItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5065642014798611877 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4024388799813096854} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8333043509333940129} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2953680020842013688 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4024388799813096854} + m_CullTransparentMesh: 1 +--- !u!114 &5092658527967839279 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4024388799813096854} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3958728393826437956 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4024388799813096854} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: LeftItem + CustomComment: + mComponentName: UnityEngine.UI.Image +--- !u!1 &4138736096266597115 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8048533352694695708} + - component: {fileID: 4476319710925218141} + - component: {fileID: 7297836506493679} + m_Layer: 0 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8048533352694695708 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4138736096266597115} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6584298779789211397} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4476319710925218141 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4138736096266597115} + m_CullTransparentMesh: 1 +--- !u!114 &7297836506493679 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4138736096266597115} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4335887278641882288 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6336473892143704609} + - component: {fileID: 1181747651547168674} + - component: {fileID: 1467124759781623263} + m_Layer: 0 + m_Name: LeftContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6336473892143704609 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4335887278641882288} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1318390635077869678} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0.00013167458} + m_SizeDelta: {x: 0, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1181747651547168674 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4335887278641882288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 100, y: 100} + m_Spacing: {x: 10, y: 10} + m_Constraint: 0 + m_ConstraintCount: 2 +--- !u!114 &1467124759781623263 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4335887278641882288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: Content + CustomComment: + mComponentName: RectTransform +--- !u!1 &4900020430220917441 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6608813160943937009} + - component: {fileID: 5390595855353182900} + - component: {fileID: 5518550782261125692} + m_Layer: 0 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6608813160943937009 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4900020430220917441} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6058473778588375874} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5390595855353182900 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4900020430220917441} + m_CullTransparentMesh: 1 +--- !u!114 &5518550782261125692 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4900020430220917441} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5231692418628772328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8195176150318222682} + - component: {fileID: 8240270928057047746} + - component: {fileID: 2785932821700596982} + - component: {fileID: 2699145837462799152} + m_Layer: 0 + m_Name: Right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8195176150318222682 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5231692418628772328} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5249969822239494612} + - {fileID: 8684970269249796938} + - {fileID: 2525946039026654729} + m_Father: {fileID: 3838833872239473580} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -364.56055, y: 0} + m_SizeDelta: {x: 730, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8240270928057047746 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5231692418628772328} + m_CullTransparentMesh: 1 +--- !u!114 &2785932821700596982 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5231692418628772328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &2699145837462799152 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5231692418628772328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 6690386520824484871} + m_Horizontal: 1 + m_Vertical: 1 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 5249969822239494612} + m_HorizontalScrollbar: {fileID: 8791239955636502620} + m_VerticalScrollbar: {fileID: 4830704509972715571} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &5533578643516125822 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5249969822239494612} + - component: {fileID: 8468620193606598014} + - component: {fileID: 2039402422259965534} + - component: {fileID: 7317893052516074551} + m_Layer: 0 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5249969822239494612 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5533578643516125822} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6690386520824484871} + m_Father: {fileID: 8195176150318222682} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &8468620193606598014 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5533578643516125822} + m_CullTransparentMesh: 1 +--- !u!114 &2039402422259965534 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5533578643516125822} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &7317893052516074551 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5533578643516125822} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!1 &6096318315612650036 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2525946039026654729} + - component: {fileID: 2173444022361033529} + - component: {fileID: 6986069924218128084} + - component: {fileID: 4830704509972715571} + m_Layer: 0 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2525946039026654729 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6096318315612650036} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6584298779789211397} + m_Father: {fileID: 8195176150318222682} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!222 &2173444022361033529 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6096318315612650036} + m_CullTransparentMesh: 1 +--- !u!114 &6986069924218128084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6096318315612650036} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4830704509972715571 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6096318315612650036} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7297836506493679} + m_HandleRect: {fileID: 8048533352694695708} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6547800660382164721 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6058473778588375874} + m_Layer: 0 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6058473778588375874 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6547800660382164721} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6608813160943937009} + m_Father: {fileID: 394787390200614376} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7814570042150248306 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6690386520824484871} + - component: {fileID: 3568317990091449983} + - component: {fileID: 6126463599289851190} + - component: {fileID: 2212699225699437522} + m_Layer: 0 + m_Name: RightContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6690386520824484871 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7814570042150248306} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5249969822239494612} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0.00013167458} + m_SizeDelta: {x: 0, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &3568317990091449983 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7814570042150248306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: RightContent + CustomComment: + mComponentName: RectTransform +--- !u!222 &6126463599289851190 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7814570042150248306} + m_CullTransparentMesh: 1 +--- !u!114 &2212699225699437522 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7814570042150248306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8228266746100192071 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 394787390200614376} + - component: {fileID: 6708653711916478926} + - component: {fileID: 1891542050000837780} + - component: {fileID: 1324067570812135091} + m_Layer: 0 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &394787390200614376 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8228266746100192071} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6058473778588375874} + m_Father: {fileID: 4103523224226093892} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: -17} + m_Pivot: {x: 1, y: 1} +--- !u!222 &6708653711916478926 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8228266746100192071} + m_CullTransparentMesh: 1 +--- !u!114 &1891542050000837780 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8228266746100192071} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1324067570812135091 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8228266746100192071} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5518550782261125692} + m_HandleRect: {fileID: 6608813160943937009} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &8636616114181872079 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3838833872239473580} + - component: {fileID: 1388199598429812564} + m_Layer: 0 + m_Name: UIImageSelectMap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3838833872239473580 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8636616114181872079} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4103523224226093892} + - {fileID: 8195176150318222682} + - {fileID: 8333043509333940129} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1388199598429812564 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8636616114181872079} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8fa5d149f86eeb54d89208e36562e2d8, type: 3} + m_Name: + m_EditorClassIdentifier: + LeftContent: {fileID: 6336473892143704609} + LeftItem: {fileID: 5092658527967839279} + RightItem: {fileID: 6234933970462649390} + RightContent: {fileID: 6690386520824484871} +--- !u!1 &8646243921430610519 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7471371802902961118} + - component: {fileID: 4758506154025675790} + - component: {fileID: 3902461113349703364} + m_Layer: 0 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7471371802902961118 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8646243921430610519} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1053974557369902190} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4758506154025675790 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8646243921430610519} + m_CullTransparentMesh: 1 +--- !u!114 &3902461113349703364 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8646243921430610519} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 diff --git a/Assets/Art/UIPrefab/UIImageSelectMap.prefab.meta b/Assets/Art/UIPrefab/UIImageSelectMap.prefab.meta new file mode 100644 index 00000000..7083810f --- /dev/null +++ b/Assets/Art/UIPrefab/UIImageSelectMap.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8ae12c898f4042949bc5cc317c63d77d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: uiimageselectmap_prefab + assetBundleVariant: diff --git a/Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity b/Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity new file mode 100644 index 00000000..a1373e08 --- /dev/null +++ b/Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity @@ -0,0 +1,975 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.37311953, g: 0.38074014, b: 0.3587274, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &377343312 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 377343313} + m_Layer: 5 + m_Name: CanvasPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &377343313 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377343312} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2114871786} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &801682693 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 801682694} + - component: {fileID: 801682696} + - component: {fileID: 801682695} + m_Layer: 5 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &801682694 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801682693} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2114871786} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &801682695 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801682693} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 1 +--- !u!114 &801682696 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801682693} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &995027251 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 995027252} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &995027252 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 995027251} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2114871786} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1084276686 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1084276689} + - component: {fileID: 1084276687} + - component: {fileID: 1084276688} + m_Layer: 5 + m_Name: UICamera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!20 &1084276687 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1084276686} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 3 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: 99 + m_CullingMask: + serializedVersion: 2 + m_Bits: 32 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!124 &1084276688 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1084276686} + m_Enabled: 1 +--- !u!4 &1084276689 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1084276686} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -100} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2114871786} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1126280010 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1126280011} + m_Layer: 5 + m_Name: Common + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1126280011 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1126280010} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2114871786} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1161286720 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1161286721} + - component: {fileID: 1161286724} + - component: {fileID: 1161286723} + - component: {fileID: 1161286722} + m_Layer: 5 + m_Name: RightBottom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1161286721 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1161286720} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2114871786} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1828.92, y: 0} + m_Pivot: {x: 1, y: -0.000000461936} +--- !u!222 &1161286722 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1161286720} + m_CullTransparentMesh: 1 +--- !u!114 &1161286723 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1161286720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &1161286724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1161286720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 8 + m_Spacing: 10 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 1 + m_ReverseArrangement: 1 +--- !u!1 &1320020531 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1320020532} + m_Layer: 5 + m_Name: PopUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1320020532 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1320020531} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.0000799, y: 1.0000799, z: 1.0000799} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2114871786} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1349401529 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1349401531} + - component: {fileID: 1349401530} + m_Layer: 0 + m_Name: TestUIImageSelectMap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1349401530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1349401529} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b6b7a3e7dc894eaca1053ef166cdad33, type: 3} + m_Name: + m_EditorClassIdentifier: + PanelName: UIImageSelectMap + Level: 0 + mOtherPanels: [] +--- !u!4 &1349401531 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1349401529} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1635592603 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1635592604} + - component: {fileID: 1635592605} + m_Layer: 5 + m_Name: Manager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1635592604 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1635592603} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2114871786} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1635592605 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1635592603} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5dc84f25d84334e168bf64050b91e1fb, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1661191870 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1661191871} + - component: {fileID: 1661191872} + m_Layer: 5 + m_Name: Design + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1661191871 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661191870} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8931408189093656909} + m_Father: {fileID: 2114871786} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1661191872 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661191870} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6eba024ea32574239b57b098f1dc6282, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &2114871781 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2114871786} + - component: {fileID: 2114871785} + - component: {fileID: 2114871784} + - component: {fileID: 2114871783} + - component: {fileID: 2114871782} + m_Layer: 5 + m_Name: UIRoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2114871782 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114871781} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d2db7fffd623c478eba3d2cb84034d2f, type: 3} + m_Name: + m_EditorClassIdentifier: + UICamera: {fileID: 1084276687} + Canvas: {fileID: 2114871785} + CanvasScaler: {fileID: 2114871784} + GraphicRaycaster: {fileID: 2114871783} + Bg: {fileID: 995027252} + Common: {fileID: 1126280011} + PopUI: {fileID: 1320020532} + RightBottom: {fileID: 1161286721} + CanvasPanel: {fileID: 377343313} +--- !u!114 &2114871783 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114871781} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 0 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &2114871784 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114871781} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &2114871785 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114871781} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 1084276687} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 1 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 100 + m_TargetDisplay: 0 +--- !u!224 &2114871786 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114871781} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 995027252} + - {fileID: 1126280011} + - {fileID: 1161286721} + - {fileID: 1320020532} + - {fileID: 377343313} + - {fileID: 1661191871} + - {fileID: 801682694} + - {fileID: 1084276689} + - {fileID: 1635592604} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &8931408189093656908 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1661191871} + m_Modifications: + - target: {fileID: 1318390635077869678, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1318390635077869678, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1318390635077869678, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2525946039026654729, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2525946039026654729, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5249969822239494612, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5249969822239494612, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5249969822239494612, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5249969822239494612, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5702230170007598446, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_HorizontalScrollbar + value: + objectReference: {fileID: 0} + - target: {fileID: 6336473892143704609, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.0009040238 + objectReference: {fileID: 0} + - target: {fileID: 6608813160943937009, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6608813160943937009, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6690386520824484871, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.0009040238 + objectReference: {fileID: 0} + - target: {fileID: 7471371802902961118, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7471371802902961118, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8048533352694695708, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8048533352694695708, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8636616114181872079, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_Name + value: UIImageSelectMap + objectReference: {fileID: 0} + - target: {fileID: 8684970269249796938, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8684970269249796938, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} +--- !u!224 &8931408189093656909 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + m_PrefabInstance: {fileID: 8931408189093656908} + m_PrefabAsset: {fileID: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 2114871786} + - {fileID: 1349401531} diff --git a/Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity.meta b/Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity.meta new file mode 100644 index 00000000..db57b472 --- /dev/null +++ b/Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6aebd18275784904b8bee1a5e43e817a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Actions/ActionBase.cs b/Assets/Scripts/Actions/ActionBase.cs index dc832519..e3823656 100644 --- a/Assets/Scripts/Actions/ActionBase.cs +++ b/Assets/Scripts/Actions/ActionBase.cs @@ -23,6 +23,19 @@ namespace XMLTool public Dictionary args = new Dictionary(); } + public class ImageSelectMapAction : Action + { + public class Item + { + public string pic; + public string pos; + public string size; + } + + public Dictionary args = new Dictionary(); + public List items = new List(); + } + public class DictionaryCondition : Condition { diff --git a/Assets/Scripts/Actions/ActionHelper.cs b/Assets/Scripts/Actions/ActionHelper.cs index 49a5a135..3ee97089 100644 --- a/Assets/Scripts/Actions/ActionHelper.cs +++ b/Assets/Scripts/Actions/ActionHelper.cs @@ -283,6 +283,11 @@ public class ActionHelper var dictAction = (XMLTool.DictionaryAction)act; return QFramework.ShowScoreAction.Allocate(dictAction.args); } + case "ImageSelectMap": + { + var dictAction = (XMLTool.ImageSelectMapAction)act; + return QFramework.ImageSelectMapAction.Allocate(dictAction.args,dictAction.items); + } default: Debug.LogError($"ûҵAction{act.Type}"); break; diff --git a/Assets/Scripts/Actions/ImageSelectMapAction.cs b/Assets/Scripts/Actions/ImageSelectMapAction.cs new file mode 100644 index 00000000..582d7acf --- /dev/null +++ b/Assets/Scripts/Actions/ImageSelectMapAction.cs @@ -0,0 +1,115 @@ +using QFramework.Example; +using System; +using System.Collections.Generic; +using UnityEngine; +using XMLTool; + +namespace QFramework +{ + internal class ImageSelectMapAction : IAction + { + public string txt; + + + public System.Action OnFinished { get; set; } + + + private ImageSelectMapAction() + { + } + + private static readonly SimpleObjectPool mPool = + new SimpleObjectPool(() => new ImageSelectMapAction(), null, 10); + Dictionary datas; + List items; + public static ImageSelectMapAction Allocate(Dictionary datas, List items, System.Action OnFinished = null) + { + var retNode = mPool.Allocate(); + retNode.ActionID = ActionKit.ID_GENERATOR++; + retNode.Deinited = false; + retNode.datas = datas; + retNode.items = items; + retNode.Reset(); + retNode.OnFinished = OnFinished; + return retNode; + } + + + public ulong ActionID { get; set; } + public ActionStatus Status { get; set; } + + public void OnStart() + { + + UIImageSelectMapData data = new UIImageSelectMapData(); + data.totalScore = 0; + if (datas.ContainsKey("totalScore")) + { + float.TryParse(datas["totalScore"], out data.totalScore); + } + data.rightScore = 0; + if (datas.ContainsKey("rightScore")) + { + float.TryParse(datas["rightScore"], out data.rightScore); + } + data.wrongScore = 0; + if (datas.ContainsKey("wrongScore")) + { + float.TryParse(datas["wrongScore"], out data.wrongScore); + } + data.scoreName = datas.ContainsKey("scoreName") ? datas["scoreName"] : ""; + data.rightLabel = datas.ContainsKey("rightLabel") ? datas["rightLabel"] : ""; + data.wrongLabel = datas.ContainsKey("wrongLabel") ? datas["wrongLabel"] : ""; + data.finishedEvent = datas.ContainsKey("finishedEvent") ? datas["finishedEvent"] : ""; + data.rightBg = datas.ContainsKey("rightBg") ? datas["rightBg"] : ""; + + foreach (var item in items) + { + data.items.Add(new UIImageSelectMapData.OptionItem() + { + pic = item.pic, + pos = Utility.GetVector2FromStrArray(item.pos), + size = Utility.GetVector2FromStrArray(item.size) + }); + } + + UIKit.OpenPanelAsync(uiData: data, canvasLevel: UILevel.PopUI).ToAction().StartGlobal(() => + { + + this.Finish(); + OnFinished?.Invoke(); + }); + + } + + public void OnExecute(float dt) + { + } + + public void OnFinish() + { + } + + public void Reset() + { + Status = ActionStatus.NotStart; + Paused = false; + } + + public bool Paused { get; set; } + + public void Deinit() + { + if (!Deinited) + { + OnFinished = null; + Deinited = true; + mPool.Recycle(this); + } + } + + public bool Deinited { get; set; } + } + + +} \ No newline at end of file diff --git a/Assets/Scripts/Actions/ImageSelectMapAction.cs.meta b/Assets/Scripts/Actions/ImageSelectMapAction.cs.meta new file mode 100644 index 00000000..c995180c --- /dev/null +++ b/Assets/Scripts/Actions/ImageSelectMapAction.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 93d6ed89dd2e1974f8712dde5a2c6c31 +timeCreated: 1647655796 \ No newline at end of file diff --git a/Assets/Scripts/Tools/WaterfallScrollView.cs b/Assets/Scripts/Tools/WaterfallScrollView.cs new file mode 100644 index 00000000..e395d037 --- /dev/null +++ b/Assets/Scripts/Tools/WaterfallScrollView.cs @@ -0,0 +1,361 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +public class WaterfallScrollView : MonoBehaviour +{ + [Header("")] + [SerializeField] private ScrollRect scrollRect; + [SerializeField] private RectTransform viewport; + [SerializeField] private RectTransform content; + [SerializeField] private RectTransform itemPrefab; + [SerializeField] private Image itemImageComponent; // ԤеImage + + [Header("ٲ")] + [SerializeField] private int columnCount = 3; + [SerializeField] private float spacingX = 10f; + [SerializeField] private float spacingY = 10f; + [SerializeField] private float paddingLeft = 10f; + [SerializeField] private float paddingRight = 10f; + [SerializeField] private float paddingTop = 10f; + [SerializeField] private float paddingBottom = 10f; + + private List columnHeights; + private List activeItems = new List(); + private Dictionary pooledItems = new Dictionary(); + private float itemWidth; + private float viewportHeight; + private float contentHeight; + private int totalItemCount = 0; + private int visibleStartIndex = 0; + private int visibleEndIndex = 0; + public List sprites = new List(); // 洢о + private List itemHeights = new List(); // 洢ÿļ߶ + + private void Start() + { + Initialize(); + scrollRect.onValueChanged.AddListener(OnScroll); + + // ʼspritesǷ + if (sprites.Count > 0) + { + SetContent(sprites); + } + else + { + ClearContent(); + } + } + + private void Initialize() + { + // пͼ + float availableWidth = viewport.rect.width - paddingLeft - paddingRight - (columnCount - 1) * spacingX; + itemWidth = availableWidth / columnCount; + + // ʼи߶ + columnHeights = new List(new float[columnCount]); + + // ¼ӿڸ߶ڼɼ + viewportHeight = viewport.rect.height; + } + + // ʹṩľб + public void SetContent(List sprites) + { + this.sprites = sprites ?? new List(); + totalItemCount = this.sprites.Count; + + // ûо飬 + if (totalItemCount == 0) + { + ClearContent(); + return; + } + + // ÿĸ߶ + CalculateItemHeights(); + + // ݸ߶ + contentHeight = CalculateContentHeight(); + content.sizeDelta = new Vector2(content.sizeDelta.x, contentHeight); + + // ¿ɼ + UpdateVisibleItems(); + } + + // + public void ClearContent() + { + // л + foreach (var item in activeItems) + { + item.gameObject.SetActive(false); + } + activeItems.Clear(); + + // ݴС + content.sizeDelta = new Vector2(content.sizeDelta.x, 0); + totalItemCount = 0; + itemHeights.Clear(); + } + + private void CalculateItemHeights() + { + itemHeights.Clear(); + + foreach (Sprite sprite in sprites) + { + if (sprite != null) + { + // 㱣ֿ߱ȵĸ߶ + float aspectRatio = sprite.rect.width / sprite.rect.height; + float height = itemWidth / aspectRatio; + itemHeights.Add(height); + } + else + { + // ΪգʹĬϸ߶ + itemHeights.Add(150f); + } + } + } + + private float CalculateContentHeight() + { + // и߶ + for (int i = 0; i < columnCount; i++) + { + columnHeights[i] = paddingTop; + } + + // ģⲼּݸ߶ + for (int i = 0; i < totalItemCount; i++) + { + float height = itemHeights[i]; + int shortestColumnIndex = GetShortestColumn(); + columnHeights[shortestColumnIndex] += height + spacingY; + } + + // ҳߵΪݸ߶ + float maxHeight = 0; + foreach (float height in columnHeights) + { + if (height > maxHeight) + { + maxHeight = height; + } + } + + return maxHeight + paddingBottom - spacingY; + } + + private int GetShortestColumn() + { + int shortestIndex = 0; + float minHeight = columnHeights[0]; + + for (int i = 1; i < columnCount; i++) + { + if (columnHeights[i] < minHeight) + { + minHeight = columnHeights[i]; + shortestIndex = i; + } + } + + return shortestIndex; + } + + private void UpdateVisibleItems() + { + // ûĿִκβ + if (totalItemCount == 0) + return; + + // 㵱ǰ±߽ + float viewportTop = -content.anchoredPosition.y; + float viewportBottom = viewportTop + viewportHeight; + + // и߶ڲּ + for (int i = 0; i < columnCount; i++) + { + columnHeights[i] = paddingTop; + } + + // ɼʼͽ + int newVisibleStartIndex = 0; + int newVisibleEndIndex = totalItemCount - 1; + float currentYPosition = 0; + + // ҵһɼ + for (int i = 0; i < totalItemCount; i++) + { + float height = itemHeights[i]; + int columnIndex = GetShortestColumn(); + float xPosition = paddingLeft + columnIndex * (itemWidth + spacingX); + float yPosition = -columnHeights[columnIndex]; // עUIΪ + + columnHeights[columnIndex] += height + spacingY; + + float itemTop = yPosition; + float itemBottom = yPosition - height; + + // ڿڻн + if (itemBottom <= viewportBottom && itemTop >= viewportTop - viewportHeight) // һĻ߶ȵ + { + newVisibleStartIndex = i; + break; + } + } + + // и߶ٴμ + for (int i = 0; i < columnCount; i++) + { + columnHeights[i] = paddingTop; + } + + // ҵһɼ + for (int i = 0; i < totalItemCount; i++) + { + float height = itemHeights[i]; + int columnIndex = GetShortestColumn(); + float xPosition = paddingLeft + columnIndex * (itemWidth + spacingX); + float yPosition = -columnHeights[columnIndex]; // עUIΪ + + columnHeights[columnIndex] += height + spacingY; + + float itemTop = yPosition; + float itemBottom = yPosition - height; + + // ڿڻн + if (itemBottom <= viewportBottom + viewportHeight && itemTop >= viewportTop) // һĻ߶ȵ + { + newVisibleEndIndex = i; + } + else if (i > newVisibleStartIndex) // ѾҵʼſʼжϽ + { + break; + } + } + + // ɼΧûб仯򲻸 + if (newVisibleStartIndex == visibleStartIndex && newVisibleEndIndex == visibleEndIndex) + { + return; + } + + visibleStartIndex = newVisibleStartIndex; + visibleEndIndex = newVisibleEndIndex; + + // ղٿɼ + RecycleInvisibleItems(); + + // и߶ٴμ㣬ʵʲ + for (int i = 0; i < columnCount; i++) + { + columnHeights[i] = paddingTop; + } + + // ¿ɼ + for (int i = 0; i < totalItemCount; i++) + { + float height = itemHeights[i]; + int columnIndex = GetShortestColumn(); + float xPosition = paddingLeft + columnIndex * (itemWidth + spacingX); + float yPosition = -columnHeights[columnIndex]; // עUIΪ + + columnHeights[columnIndex] += height + spacingY; + + // ֻɼΧڵ + if (i >= visibleStartIndex && i <= visibleEndIndex) + { + CreateOrUpdateItem(i, xPosition, yPosition, itemWidth, height); + } + } + } + + private void CreateOrUpdateItem(int index, float x, float y, float width, float height) + { + RectTransform item; + if (!pooledItems.TryGetValue(index, out item)) + { + // + item = Instantiate(itemPrefab, content); + item.name = "Item_" + index; + pooledItems[index] = item; + activeItems.Add(item); + } + else if (!activeItems.Contains(item)) + { + // ӳȡ + item.gameObject.SetActive(true); + activeItems.Add(item); + } + + // λúʹС + item.anchorMin = new Vector2(0, 1); + item.anchorMax = new Vector2(0, 1); + item.pivot = new Vector2(0, 1); + item.anchoredPosition = new Vector2(x, y); + item.sizeDelta = new Vector2(width, height); + + // + UpdateItemContent(item, index); + } + + private void UpdateItemContent(RectTransform item, int index) + { + // ȡImage + Image image = item.GetComponentInChildren(); + if (image == null && itemImageComponent != null) + { + // ûҵImageʹԤе + image = Instantiate(itemImageComponent, item); + image.rectTransform.anchorMin = Vector2.zero; + image.rectTransform.anchorMax = Vector2.one; + image.rectTransform.sizeDelta = Vector2.zero; + } + + if (image && index < sprites.Count && sprites[index] != null) + { + // þ + image.sprite = sprites[index]; + image.SetNativeSize(); + + // ImageΪֿ߱ + image.preserveAspect = true; + } + } + + private void RecycleInvisibleItems() + { + // ҳҪյ + List itemsToRecycle = new List(); + foreach (RectTransform item in activeItems) + { + string[] nameParts = item.name.Split('_'); + if (nameParts.Length >= 2 && int.TryParse(nameParts[1], out int itemIndex)) + { + if (itemIndex < visibleStartIndex || itemIndex > visibleEndIndex) + { + itemsToRecycle.Add(item); + } + } + } + + // + foreach (RectTransform item in itemsToRecycle) + { + item.gameObject.SetActive(false); + activeItems.Remove(item); + } + } + + private void OnScroll(Vector2 scrollPosition) + { + UpdateVisibleItems(); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Tools/WaterfallScrollView.cs.meta b/Assets/Scripts/Tools/WaterfallScrollView.cs.meta new file mode 100644 index 00000000..86868d47 --- /dev/null +++ b/Assets/Scripts/Tools/WaterfallScrollView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2a86eb889d0df8142b20f98a27e5deb4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/UIImageSelectMap.Designer.cs b/Assets/Scripts/UI/UIImageSelectMap.Designer.cs new file mode 100644 index 00000000..1775c1de --- /dev/null +++ b/Assets/Scripts/UI/UIImageSelectMap.Designer.cs @@ -0,0 +1,55 @@ +using System; +using UnityEngine; +using UnityEngine.UI; +using QFramework; + +namespace QFramework.Example +{ + // Generate Id:b499f0f9-a71b-40ff-a499-a5e4defad39f + public partial class UIImageSelectMap + { + public const string Name = "UIImageSelectMap"; + + [SerializeField] + public RectTransform LeftContent; + [SerializeField] + public UnityEngine.UI.Image LeftItem; + [SerializeField] + public UnityEngine.UI.Image RightItem; + [SerializeField] + public RectTransform RightContent; + + private UIImageSelectMapData mPrivateData = null; + + protected override void ClearUIComponents() + { + LeftContent = null; + LeftItem = null; + RightItem = null; + RightContent = null; + + mData = null; + } + + public UIImageSelectMapData Data + { + get + { + return mData; + } + } + + UIImageSelectMapData mData + { + get + { + return mPrivateData ?? (mPrivateData = new UIImageSelectMapData()); + } + set + { + mUIData = value; + mPrivateData = value; + } + } + } +} diff --git a/Assets/Scripts/UI/UIImageSelectMap.Designer.cs.meta b/Assets/Scripts/UI/UIImageSelectMap.Designer.cs.meta new file mode 100644 index 00000000..7249517e --- /dev/null +++ b/Assets/Scripts/UI/UIImageSelectMap.Designer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 30b3cad2e23c39b43befa7ffb3bae172 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/UIImageSelectMap.cs b/Assets/Scripts/UI/UIImageSelectMap.cs new file mode 100644 index 00000000..1d4fce1c --- /dev/null +++ b/Assets/Scripts/UI/UIImageSelectMap.cs @@ -0,0 +1,90 @@ +using UnityEngine; +using UnityEngine.UI; +using QFramework; +using System.Collections.Generic; + +namespace QFramework.Example +{ + public class UIImageSelectMapData : UIPanelData + { + public class OptionItem + { + public string pic; + public Vector2 pos; + public Vector2 size; + } + public string scoreName; + public float totalScore; + public float rightScore; + public float wrongScore; + public string rightLabel; + public string wrongLabel; + public string finishedEvent; + public string rightBg; + public List items = new List(); + + } + public partial class UIImageSelectMap : UIPanel + { + ResLoader loader; + protected override void OnInit(IUIData uiData = null) + { + mData = uiData as UIImageSelectMapData ?? new UIImageSelectMapData(); + // please add init code here + loader = ResLoader.Allocate(); + } + + protected override void OnOpen(IUIData uiData = null) + { + mData = uiData as UIImageSelectMapData ?? new UIImageSelectMapData(); + + LeftContent.RemoveAllChildren(); + RightContent.RemoveAllChildren(); + foreach (var item in mData.items) + { + var leftObj = GameObject.Instantiate(LeftItem, LeftContent); + var path = Global.imagePath + item.pic; + loader.Add2Load(path.ToNetImageResName(), (success, res) => + { + if (success) + { + leftObj.GetComponent().sprite = Utility.GetSprite(res.Asset as Texture2D); + } + }); + + var rightObj = GameObject.Instantiate(RightItem, RightContent); + rightObj.transform.localPosition = item.pos; + rightObj.rectTransform.sizeDelta = item.size; + } + + + + var rightBgPath = Global.imagePath + mData.rightBg; + loader.Add2Load(rightBgPath.ToNetImageResName(), (success, res) => + { + if (success) + { + RightContent.GetComponent().sprite = Utility.GetSprite(res.Asset as Texture2D); + RightContent.GetComponent().SetNativeSize(); + } + }); + + loader.LoadAsync(); + + + + } + + protected override void OnShow() + { + } + + protected override void OnHide() + { + } + + protected override void OnClose() + { + } + } +} diff --git a/Assets/Scripts/UI/UIImageSelectMap.cs.meta b/Assets/Scripts/UI/UIImageSelectMap.cs.meta new file mode 100644 index 00000000..9a10b604 --- /dev/null +++ b/Assets/Scripts/UI/UIImageSelectMap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8fa5d149f86eeb54d89208e36562e2d8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Xml/XmlParser.cs b/Assets/Scripts/Xml/XmlParser.cs index 2dfa2d9f..ebc95d0e 100644 --- a/Assets/Scripts/Xml/XmlParser.cs +++ b/Assets/Scripts/Xml/XmlParser.cs @@ -1670,6 +1670,61 @@ namespace XMLTool newAction = act; } break; + case "ImageSelectMap": + { + var act = new ImageSelectMapAction(); + XAttribute scoreName = action.Attribute("scoreName"); + if (scoreName != null) + { + act.args.Add("scoreName", scoreName.Value); + } + XAttribute totalScore = action.Attribute("totalScore"); + if (totalScore != null) + { + act.args.Add("totalScore", totalScore.Value); + } + XAttribute rightScore = action.Attribute("rightScore"); + if (rightScore != null) + { + act.args.Add("rightScore", rightScore.Value); + } + XAttribute wrongScore = action.Attribute("wrongScore"); + if (wrongScore != null) + { + act.args.Add("wrongScore", wrongScore.Value); + } + XAttribute rightLabel = action.Attribute("rightLabel"); + if (rightLabel != null) + { + act.args.Add("rightLabel", rightLabel.Value); + } + XAttribute wrongLabel = action.Attribute("wrongLabel"); + if (wrongLabel != null) + { + act.args.Add("wrongLabel", wrongLabel.Value); + } + XAttribute finishedEvent = action.Attribute("finishedEvent"); + if (finishedEvent != null) + { + act.args.Add("finishedEvent", finishedEvent.Value); + } + XAttribute rightBg = action.Attribute("rightBg"); + if (rightBg != null) + { + act.args.Add("rightBg", rightBg.Value); + } + foreach (var itemData in action.Elements("Item")) + { + act.items.Add(new ImageSelectMapAction.Item() + { + pic = itemData.Attribute("pic")?.Value, + size = itemData.Attribute("rightSize")?.Value, + pos = itemData.Attribute("rightPos")?.Value + }); + } + newAction = act; + } + break; default: newAction = new Action(); break; From a8f33794b015eec4782c02644fb995641953c28f Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Sun, 27 Apr 2025 14:00:35 +0800 Subject: [PATCH 19/28] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/Controller/ScoreController.cs | 15 +++++++++++++-- Assets/Scripts/UI/UIScore.cs | 7 ++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Assets/Scripts/Controller/ScoreController.cs b/Assets/Scripts/Controller/ScoreController.cs index 32a51452..449b455e 100644 --- a/Assets/Scripts/Controller/ScoreController.cs +++ b/Assets/Scripts/Controller/ScoreController.cs @@ -47,10 +47,16 @@ public class ScoreController : MonoSingleton } - public string GetModuleDictJson(string name = "") + public string GetModuleDictJson(string name = "", string id = "", string sum = "") { var resultDict = new Dictionary(); + DateTime curTime = DateTime.Now; resultDict.Add("name", name); + resultDict.Add("id", id); + resultDict.Add("sum", sum); + resultDict.Add("time", curTime.ToString("yyyy.MM.dd")); + resultDict.Add("year", curTime.Year); + resultDict.Add("month", curTime.Month); foreach (var dataPair in moduleDict) { var data = dataPair.Value; @@ -62,7 +68,12 @@ public class ScoreController : MonoSingleton string key = $"{scoreStep.step}{scoreStep.name}"; resultDict[key] = scoreStep.value; - resultDict.Add(key + "Time", string.IsNullOrEmpty(scoreStep.time) == true ? "" : scoreStep.time); + string value = "\u00A0"; + if (string.IsNullOrEmpty(scoreStep.time) == false) + { + value = scoreStep.time; + } + resultDict.Add(key + "Time", value); } } } diff --git a/Assets/Scripts/UI/UIScore.cs b/Assets/Scripts/UI/UIScore.cs index aa6f96cc..6532eba7 100644 --- a/Assets/Scripts/UI/UIScore.cs +++ b/Assets/Scripts/UI/UIScore.cs @@ -33,7 +33,7 @@ namespace QFramework.Example -#if UNITY_WEBGL +#if UNITY_WEBGL&&!UNITY_EDITOR ResLoader loader = ResLoader.Allocate(); loader.Add2Load(Global.reportDemoPath.ToLocalBytesResName(), (success, res) => { @@ -45,7 +45,7 @@ namespace QFramework.Example } }); loader.LoadAsync(); -#elif UNITY_STANDALONE_WIN +#elif UNITY_STANDALONE_WIN||UNITY_EDITOR DownLoad.interactable = false; AsposeHelper.Writer(GetScoreDataJson(), () => { @@ -60,7 +60,7 @@ namespace QFramework.Example public string GetScoreDataJson() { - return ScoreController.Instance.GetModuleDictJson(InputName.text); + return ScoreController.Instance.GetModuleDictJson(InputName.text, InputId.text, this.Sum.text); } @@ -108,6 +108,7 @@ namespace QFramework.Example startTime = item.Value.time, endTime = item.Value.time, seq = seq, + StepState = (int)item.Value.value == float.Parse(item.Value.sum) ? "ȫȷ" : "д" }); seq++; } From dc56dbb402c3be69dd117a19a2cea8239e781e55 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Sun, 27 Apr 2025 14:26:23 +0800 Subject: [PATCH 20/28] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/UI/UIScore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/Scripts/UI/UIScore.cs b/Assets/Scripts/UI/UIScore.cs index 6532eba7..d8b74456 100644 --- a/Assets/Scripts/UI/UIScore.cs +++ b/Assets/Scripts/UI/UIScore.cs @@ -60,7 +60,7 @@ namespace QFramework.Example public string GetScoreDataJson() { - return ScoreController.Instance.GetModuleDictJson(InputName.text, InputId.text, this.Sum.text); + return ScoreController.Instance.GetModuleDictJson(InputName.text, InputId.text, this.Score.text); } From 5f791268ef0e1cdac57a13cdbe7b71fc8efdce68 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Mon, 28 Apr 2025 09:12:21 +0800 Subject: [PATCH 21/28] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/UI/UIImageSelectMap.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Assets/Scripts/UI/UIImageSelectMap.cs b/Assets/Scripts/UI/UIImageSelectMap.cs index 1d4fce1c..af1e8460 100644 --- a/Assets/Scripts/UI/UIImageSelectMap.cs +++ b/Assets/Scripts/UI/UIImageSelectMap.cs @@ -2,6 +2,8 @@ using UnityEngine; using UnityEngine.UI; using QFramework; using System.Collections.Generic; +using UnityEngine.EventSystems; +using System; namespace QFramework.Example { @@ -52,6 +54,9 @@ namespace QFramework.Example } }); + leftObj.OnDragEvent(leftOnDrag); + + var rightObj = GameObject.Instantiate(RightItem, RightContent); rightObj.transform.localPosition = item.pos; rightObj.rectTransform.sizeDelta = item.size; @@ -75,6 +80,11 @@ namespace QFramework.Example } + private void leftOnDrag(PointerEventData data) + { + data.selectedObject.transform.position = Input.mousePosition; + } + protected override void OnShow() { } From af9ddbffe91e7e13a369e3ca6ce6b0a57006b1a7 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Mon, 28 Apr 2025 10:17:57 +0800 Subject: [PATCH 22/28] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Art/UIPrefab/UIImageSelectMap.prefab | 18 +++--- Assets/Scripts/UI/UIImageSelectMap.cs | 68 +++++++++++++++++++-- 2 files changed, 72 insertions(+), 14 deletions(-) diff --git a/Assets/Art/UIPrefab/UIImageSelectMap.prefab b/Assets/Art/UIPrefab/UIImageSelectMap.prefab index a5078f91..f21a5820 100644 --- a/Assets/Art/UIPrefab/UIImageSelectMap.prefab +++ b/Assets/Art/UIPrefab/UIImageSelectMap.prefab @@ -269,7 +269,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &8333043509333940129 RectTransform: m_ObjectHideFlags: 0 @@ -454,8 +454,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 336.29443, y: 0} - m_SizeDelta: {x: 672.5889, y: 0} + m_AnchoredPosition: {x: 336.29443, y: -54.999996} + m_SizeDelta: {x: 672.5889, y: -110} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &2989934290346154672 CanvasRenderer: @@ -726,7 +726,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0.00013167458} + m_AnchoredPosition: {x: 0, y: 0.0008044916} m_SizeDelta: {x: 0, y: 300} m_Pivot: {x: 0, y: 1} --- !u!114 &1181747651547168674 @@ -882,8 +882,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -364.56055, y: 0} - m_SizeDelta: {x: 730, y: 0} + m_AnchoredPosition: {x: -364.56055, y: -55} + m_SizeDelta: {x: 730, y: -110} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &8240270928057047746 CanvasRenderer: @@ -936,8 +936,8 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Content: {fileID: 6690386520824484871} - m_Horizontal: 1 - m_Vertical: 1 + m_Horizontal: 0 + m_Vertical: 0 m_MovementType: 1 m_Elasticity: 0.1 m_Inertia: 1 @@ -1240,7 +1240,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0.00013167458} + m_AnchoredPosition: {x: 0, y: 0.0008044916} m_SizeDelta: {x: 0, y: 300} m_Pivot: {x: 0, y: 1} --- !u!114 &3568317990091449983 diff --git a/Assets/Scripts/UI/UIImageSelectMap.cs b/Assets/Scripts/UI/UIImageSelectMap.cs index af1e8460..cb10266d 100644 --- a/Assets/Scripts/UI/UIImageSelectMap.cs +++ b/Assets/Scripts/UI/UIImageSelectMap.cs @@ -29,6 +29,10 @@ namespace QFramework.Example public partial class UIImageSelectMap : UIPanel { ResLoader loader; + GameObject moveObj; + GameObject enterRight; + GameObject leftDragObj; + Dictionary itemDatas = new Dictionary(); protected override void OnInit(IUIData uiData = null) { mData = uiData as UIImageSelectMapData ?? new UIImageSelectMapData(); @@ -42,6 +46,7 @@ namespace QFramework.Example LeftContent.RemoveAllChildren(); RightContent.RemoveAllChildren(); + itemDatas.Clear(); foreach (var item in mData.items) { var leftObj = GameObject.Instantiate(LeftItem, LeftContent); @@ -54,12 +59,18 @@ namespace QFramework.Example } }); - leftObj.OnDragEvent(leftOnDrag); - + leftObj.OnBeginDragEvent(LeftOnBeginDrag); + leftObj.OnDragEvent(LeftOnDrag); + leftObj.OnEndDragEvent(LeftOnEndDrag); var rightObj = GameObject.Instantiate(RightItem, RightContent); - rightObj.transform.localPosition = item.pos; + rightObj.name = item.pic; + rightObj.rectTransform.anchoredPosition = item.pos; rightObj.rectTransform.sizeDelta = item.size; + rightObj.OnPointerEnterEvent(RightOnEnter); + rightObj.OnPointerExitEvent(RightOnExit); + + itemDatas.Add(leftObj.gameObject, item); } @@ -80,11 +91,58 @@ namespace QFramework.Example } - private void leftOnDrag(PointerEventData data) + private void RightOnExit(PointerEventData data) { - data.selectedObject.transform.position = Input.mousePosition; + enterRight = null; } + private void RightOnEnter(PointerEventData data) + { + enterRight = data.pointerEnter.gameObject; + } + + private void LeftOnBeginDrag(PointerEventData data) + { + leftDragObj = data.pointerDrag; + moveObj = GameObject.Instantiate(LeftItem.gameObject, gameObject.transform); + moveObj.GetComponent().raycastTarget = false; + } + + private void LeftOnEndDrag(PointerEventData data) + { + if (enterRight) + { + if (enterRight.name == itemDatas[leftDragObj].pic) + { + Debug.LogError("ȷ"); + enterRight.GetComponent().color = Color.green; + } + else + { + Debug.LogError(""); + enterRight.GetComponent().color = Color.red; + } + moveObj.transform.parent = enterRight.transform; + moveObj.transform.localPosition = Vector3.zero; + } + else + { + GameObject.Destroy(moveObj); + moveObj = null; + } + leftDragObj = null; + } + + private void LeftOnDrag(PointerEventData data) + { + //data.pointerDrag.transform.position = Input.mousePosition; + if (moveObj) + { + moveObj.transform.position = Input.mousePosition; + } + } + + protected override void OnShow() { } From e506167b3eedee0a121b82173161340ac67a7acb Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Mon, 28 Apr 2025 10:27:15 +0800 Subject: [PATCH 23/28] =?UTF-8?q?=E9=9D=9E=E6=95=B0=E5=80=BC=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E4=B8=8D=E5=AD=98=E5=82=A8=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/UI/UIInput.cs | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/Assets/Scripts/UI/UIInput.cs b/Assets/Scripts/UI/UIInput.cs index 26e19459..58e83e92 100644 --- a/Assets/Scripts/UI/UIInput.cs +++ b/Assets/Scripts/UI/UIInput.cs @@ -53,13 +53,17 @@ namespace QFramework.Example foreach (var item in mData.inputs) { GameObject input = GameObject.Instantiate(InputItem.gameObject, InputContent); + input.name = item.name; input.transform.Find("Name").GetComponent().text = item.name; var inputField = input.transform.Find("Input").GetComponent(); inputField.onEndEdit.AddListener(value => { - float v = 0; - float.TryParse(value, out v); - VarController.Instance.Set(item.var, v); + if (string.IsNullOrEmpty(item.var) == false) + { + float v = 0; + float.TryParse(value, out v); + VarController.Instance.Set(item.var, v); + } }); } @@ -125,12 +129,24 @@ namespace QFramework.Example foreach (var item in mData.inputs) { var list = item.answer.Split('|').ToList(); - if (list.Contains(VarController.Instance.Get(item.var).ToString())==false) + if (string.IsNullOrEmpty(item.var)) { - return false; + Transform trans = InputContent.transform.Find(item.name); + string inputStr = trans.Find("Input").GetComponent().text; + if (list.Contains(inputStr)) + { + return true; + } + } + else + { + if (list.Contains(VarController.Instance.Get(item.var).ToString())) + { + return true; + } } } - return true; + return false; } protected override void OnShow() From 11da176fab81f50f5c7e1701c91b316012132c36 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Mon, 28 Apr 2025 10:34:53 +0800 Subject: [PATCH 24/28] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/UI/UIInput.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/Scripts/UI/UIInput.cs b/Assets/Scripts/UI/UIInput.cs index 58e83e92..cdaa91a7 100644 --- a/Assets/Scripts/UI/UIInput.cs +++ b/Assets/Scripts/UI/UIInput.cs @@ -132,7 +132,7 @@ namespace QFramework.Example if (string.IsNullOrEmpty(item.var)) { Transform trans = InputContent.transform.Find(item.name); - string inputStr = trans.Find("Input").GetComponent().text; + string inputStr = trans.Find("Input").GetComponent().text; if (list.Contains(inputStr)) { return true; From a335f2f4bd02dcc2dba134597440b62849aac56c Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Mon, 28 Apr 2025 14:50:00 +0800 Subject: [PATCH 25/28] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Art/UIPrefab/UIImageSelectMap.prefab | 94 +++++++++++++++++++-- Assets/Scripts/UI/UIImageSelectMap.cs | 38 ++++++++- 2 files changed, 119 insertions(+), 13 deletions(-) diff --git a/Assets/Art/UIPrefab/UIImageSelectMap.prefab b/Assets/Art/UIPrefab/UIImageSelectMap.prefab index f21a5820..8be7007f 100644 --- a/Assets/Art/UIPrefab/UIImageSelectMap.prefab +++ b/Assets/Art/UIPrefab/UIImageSelectMap.prefab @@ -159,9 +159,9 @@ RectTransform: m_Children: [] m_Father: {fileID: 8333043509333940129} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 960, y: -540} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &4674184409838659037 @@ -185,7 +185,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Color: {r: 1, g: 1, b: 1, a: 0} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -508,7 +508,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Content: {fileID: 6336473892143704609} - m_Horizontal: 1 + m_Horizontal: 0 m_Vertical: 1 m_MovementType: 1 m_Elasticity: 0.1 @@ -555,7 +555,8 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 8914544173708230318} m_Father: {fileID: 8333043509333940129} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} @@ -584,7 +585,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Color: {r: 1, g: 1, b: 1, a: 0} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -726,7 +727,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0.0008044916} + m_AnchoredPosition: {x: 0, y: 0.0005044027} m_SizeDelta: {x: 0, y: 300} m_Pivot: {x: 0, y: 1} --- !u!114 &1181747651547168674 @@ -749,7 +750,7 @@ MonoBehaviour: m_ChildAlignment: 0 m_StartCorner: 0 m_StartAxis: 0 - m_CellSize: {x: 100, y: 100} + m_CellSize: {x: 120, y: 120} m_Spacing: {x: 10, y: 10} m_Constraint: 0 m_ConstraintCount: 2 @@ -769,6 +770,81 @@ MonoBehaviour: CustomComponentName: Content CustomComment: mComponentName: RectTransform +--- !u!1 &4835406052127461971 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8914544173708230318} + - component: {fileID: 5613198329882542977} + - component: {fileID: 6312209549581201463} + m_Layer: 0 + m_Name: Pic + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8914544173708230318 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4835406052127461971} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5065642014798611877} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5613198329882542977 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4835406052127461971} + m_CullTransparentMesh: 1 +--- !u!114 &6312209549581201463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4835406052127461971} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &4900020430220917441 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/UI/UIImageSelectMap.cs b/Assets/Scripts/UI/UIImageSelectMap.cs index cb10266d..cb29749c 100644 --- a/Assets/Scripts/UI/UIImageSelectMap.cs +++ b/Assets/Scripts/UI/UIImageSelectMap.cs @@ -33,6 +33,8 @@ namespace QFramework.Example GameObject enterRight; GameObject leftDragObj; Dictionary itemDatas = new Dictionary(); + + Dictionary leftObjAndRightObj = new Dictionary(); protected override void OnInit(IUIData uiData = null) { mData = uiData as UIImageSelectMapData ?? new UIImageSelectMapData(); @@ -47,21 +49,24 @@ namespace QFramework.Example LeftContent.RemoveAllChildren(); RightContent.RemoveAllChildren(); itemDatas.Clear(); + leftObjAndRightObj.Clear(); foreach (var item in mData.items) { var leftObj = GameObject.Instantiate(LeftItem, LeftContent); + leftObj.name = item.pic; var path = Global.imagePath + item.pic; loader.Add2Load(path.ToNetImageResName(), (success, res) => { if (success) { - leftObj.GetComponent().sprite = Utility.GetSprite(res.Asset as Texture2D); + leftObj.transform.Find("Pic").GetComponent().sprite = Utility.GetSprite(res.Asset as Texture2D); } }); leftObj.OnBeginDragEvent(LeftOnBeginDrag); leftObj.OnDragEvent(LeftOnDrag); leftObj.OnEndDragEvent(LeftOnEndDrag); + itemDatas.Add(leftObj.gameObject, item); var rightObj = GameObject.Instantiate(RightItem, RightContent); rightObj.name = item.pic; @@ -69,8 +74,7 @@ namespace QFramework.Example rightObj.rectTransform.sizeDelta = item.size; rightObj.OnPointerEnterEvent(RightOnEnter); rightObj.OnPointerExitEvent(RightOnExit); - - itemDatas.Add(leftObj.gameObject, item); + rightObj.OnPointerClickEvent(RightOnClick); } @@ -91,6 +95,27 @@ namespace QFramework.Example } + private void RightOnClick(PointerEventData data) + { + Transform trans = data.pointerClick.transform; + if (trans.childCount > 0) + { + var child = trans.GetChild(0).gameObject; + if (leftObjAndRightObj.ContainsKey(child)) + { + leftObjAndRightObj[child].SetActive(true); + leftObjAndRightObj.Remove(child); + GameObject.Destroy(child); + trans.GetComponent().color = new Color(1, 1, 1, 0); + + } + else + { + Debug.LogError("ûҵӦ"); + } + } + } + private void RightOnExit(PointerEventData data) { enterRight = null; @@ -104,8 +129,11 @@ namespace QFramework.Example private void LeftOnBeginDrag(PointerEventData data) { leftDragObj = data.pointerDrag; - moveObj = GameObject.Instantiate(LeftItem.gameObject, gameObject.transform); + moveObj = GameObject.Instantiate(leftDragObj, gameObject.transform); + moveObj.name = moveObj.name.Replace("(Clone)", ""); + moveObj.GetComponent().sizeDelta = LeftContent.GetComponent().cellSize; moveObj.GetComponent().raycastTarget = false; + } private void LeftOnEndDrag(PointerEventData data) @@ -124,6 +152,8 @@ namespace QFramework.Example } moveObj.transform.parent = enterRight.transform; moveObj.transform.localPosition = Vector3.zero; + leftObjAndRightObj.Add(moveObj, leftDragObj); + leftDragObj.SetActive(false); } else { From 1313b080c9fd95cca2dec318dd7bd3031795bffd Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Tue, 29 Apr 2025 10:40:55 +0800 Subject: [PATCH 26/28] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionKit/Scripts/Utility/Utility.cs | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs b/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs index 359c8d97..b820f6b7 100644 --- a/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs +++ b/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs @@ -423,4 +423,34 @@ public class Utility list[j] = temp; } } + + + // 该方法用于打乱当前脚本所挂载物体的子物体顺序 + public void ShuffleChildObjects(Transform parent) + { + List children = new List(); + + for (int i = 0; i < parent.childCount; i++) + { + children.Add(parent.GetChild(i)); + } + + // 打乱子物体数组的顺序 + for (int i = 0; i < children.Count; i++) + { + int randomIndex = UnityEngine.Random.Range(i, children.Count); + Transform temp = children[randomIndex]; + children[randomIndex] = children[i]; + children[i] = temp; + } + + // 按照打乱后的顺序重新设置子物体的顺序 + for (int i = 0; i < children.Count; i++) + { + children[i].SetSiblingIndex(i); + } + } + + + } \ No newline at end of file From bc0f6483b3b3e291b460800057209e90c05c21d3 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Tue, 29 Apr 2025 10:45:19 +0800 Subject: [PATCH 27/28] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs b/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs index b820f6b7..97e67a82 100644 --- a/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs +++ b/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs @@ -426,7 +426,7 @@ public class Utility // 该方法用于打乱当前脚本所挂载物体的子物体顺序 - public void ShuffleChildObjects(Transform parent) + public static void ShuffleChildObjects(Transform parent) { List children = new List(); From 5e11329b86401432adc46f5ea9942499594b33aa Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Thu, 8 May 2025 17:21:26 +0800 Subject: [PATCH 28/28] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=BA=E7=89=A9?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/Controller/PlayerController.cs | 45 +++++++++++++++++++ .../Controller/PlayerController.cs.meta | 11 +++++ Assets/Scripts/Xml/XmlParser.cs | 2 + 3 files changed, 58 insertions(+) create mode 100644 Assets/Scripts/Controller/PlayerController.cs create mode 100644 Assets/Scripts/Controller/PlayerController.cs.meta diff --git a/Assets/Scripts/Controller/PlayerController.cs b/Assets/Scripts/Controller/PlayerController.cs new file mode 100644 index 00000000..d9bb945b --- /dev/null +++ b/Assets/Scripts/Controller/PlayerController.cs @@ -0,0 +1,45 @@ +using QFramework; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using XMLTool; + +public class PlayerController : MonoSingleton +{ + private PlayerController() { } + + public class HasDevice + { + public Device device; + public int count; + } + + + Dictionary hasDevices = new Dictionary(); + + public void DropDevice(string key, int count = 1) + { + if (hasDevices.ContainsKey(key)) + { + hasDevices[key].count -= count; + if (hasDevices[key].count <= 0) + { + hasDevices.Remove(key); + } + } + } + + public void PickDevice(string key, int count = 1) + { + if (hasDevices.ContainsKey(key)) + { + hasDevices[(string)key].count += count; + } + else + { + hasDevices.Add(key, new HasDevice() { count = count, device = DeviceController.Instance.GetDevice(key) }); + } + + } + +} diff --git a/Assets/Scripts/Controller/PlayerController.cs.meta b/Assets/Scripts/Controller/PlayerController.cs.meta new file mode 100644 index 00000000..5daecb62 --- /dev/null +++ b/Assets/Scripts/Controller/PlayerController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d963e03aaa61c0241a2a7b3a8e7bf611 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Xml/XmlParser.cs b/Assets/Scripts/Xml/XmlParser.cs index ebc95d0e..f7cd8253 100644 --- a/Assets/Scripts/Xml/XmlParser.cs +++ b/Assets/Scripts/Xml/XmlParser.cs @@ -58,6 +58,8 @@ namespace XMLTool public string BoxColliderCenter { get; set; } public bool MeshCollider { get; set; } + + public int Count = -1; }