From 4d0448c80d85e00c976b3f6ec36248c5a7448a71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9C=E8=99=9E=E6=B8=A0=E6=88=90=E2=80=9D?= <“yuqucheng2006@qq.com”> Date: Tue, 28 Jul 2026 14:54:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E9=87=8D=E7=BD=AE?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E5=8A=9F=E8=83=BD=E5=B9=B6=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增加速度传感器设备不稳定错误提示 2. 新增多套密码校验规则与多语言文案 3. 重构个人页面与密码设置面板的校验逻辑 4. 优化设备状态错误展示与UI布局 5. 新增重置密码相关的UI资源与逻辑 --- Assets/Res/language/language.json | 47 +- Assets/Res/ui/common/texture/正确icon.png | Bin 0 -> 852 bytes .../Res/ui/common/texture/正确icon.png.meta | 127 + Assets/Res/ui/common/texture/错误icon.png | Bin 0 -> 798 bytes .../Res/ui/common/texture/错误icon.png.meta | 127 + Assets/Res/ui/loginPage/loginPage.prefab | 2016 +++++++++++- Assets/Res/ui/selfpage/个人信息页.prefab | 35 +- Assets/Res/ui/selfpage/设置密码.prefab | 2812 ++++++++++++++--- .../Bluetooth/Protocol/BLEProtocolStructs.cs | 2 +- .../Scripts/UI/Pages/HomePage/HomePageCtrl.cs | 48 +- .../Pages/Login/SubPages/SetPasswordPanel.cs | 154 +- .../Scripts/UI/Pages/SelfPage/SelfInfoPage.cs | 44 +- .../UI/Pages/SelfPage/SelfSetPasswordPanel.cs | 169 +- Assets/Scripts/Utils/ValidationUtils.cs | 57 +- 14 files changed, 4963 insertions(+), 675 deletions(-) create mode 100644 Assets/Res/ui/common/texture/正确icon.png create mode 100644 Assets/Res/ui/common/texture/正确icon.png.meta create mode 100644 Assets/Res/ui/common/texture/错误icon.png create mode 100644 Assets/Res/ui/common/texture/错误icon.png.meta diff --git a/Assets/Res/language/language.json b/Assets/Res/language/language.json index 619e5d8..96e8d22 100644 --- a/Assets/Res/language/language.json +++ b/Assets/Res/language/language.json @@ -1544,10 +1544,55 @@ "zh": "同步中", "en": "Syncing" }, - { + { "key": "100310", "zh": "已同步 {0} 条记录", "en": "{0} records synced" + }, + { + "key": "100311", + "zh": "设备不稳定", + "en": "Device unstable" + }, + { + "key": "100312", + "zh": "密码长度6位,仅允许使用数字字符", + "en": "Fixed 6-digit numeric password only." + }, + { + "key": "100313", + "zh": "密码长度8-16位,不能有空格;", + "en": "8–16 characters, no spaces. " + }, + { + "key": "100314", + "zh": "字符格式应至少包括大写字母、小写字母、数字、特殊字符的三种;", + "en": "Include at least 3 types: uppercase, lowercase, digits, special chars. No 3+ consecutive or repeated digits/letters." + }, + { + "key": "100315", + "zh": "不能包含连续或重复的三个及三个以上的数字或字母;", + "en": "No 3+ consecutive or repeated digits/letters. " + }, + { + "key": "100316", + "zh": "密码不能是登录名的一部分。", + "en": "Cannot be part of login name." + }, + { + "key": "100317", + "zh": "两次密码一致", + "en": "Passwords match" + }, + { + "key": "100318", + "zh": "重置密码", + "en": "Reset Password" + }, + { + "key": "100319", + "zh": "重置密码成功", + "en": "Reset password successfully" } diff --git a/Assets/Res/ui/common/texture/正确icon.png b/Assets/Res/ui/common/texture/正确icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c0956ba723cc1499b0f89529a8b7eb24a2960d59 GIT binary patch literal 852 zcmV-a1FQUrP)1gh5T4n?u~Q&fuE1#=3Fwe6M22*UI|4)` z9TG%>A_$2h<_R1>0ZsuzsVwmT5J4cKiRpsG&q*{0BH<=2SfsJf+-+vo=aYZ#oRjY^ zpLE*4x&3BmcV}l10%GA+G5s%PE+fFal&B-h9CfFi;Rf~9sm}l@YiC=@?b=GE5oBIG zNnq~%quhU~txJ^mdkBM|ngF}JzxbjK<0!x@K1!M!B(V-5fQXgP*PlJ{9rx-=@FAN)PnLmYx>|op9NxA`5=ZY;VPi^JY{~1k=#|nYEH}; z&Mk4bKpnXF$r-sblkHNsp)BB-{x_T=Xe*|9E0hJ=pp_s7EKSY9E&9A*l5gP>^}S+R zYnp!{Vm!QXlfE0OzVZDfygl6S7m(1fS`*VkG|gp*7`^0Owjm&-wPgFYK)`v3k$mf5 zhgSc|TNvenkO(?N1TXTfgLl62%q>u=SIrlr4pJC$2HJEbVZ;l^eJJ2ml|>VX2t zL9#I942yzS^%`E;ef*TPDF*#xk@RqD*F~L(E_fyOk(++pYpeq0%6;6yj7ukrRi} zlQs3ZVm6DWwO8U$LXp$l#z1c1nV9GlBMJ)7F`^*VU3rkigu#O3A7-LBn0(-D4#RzN z#1oU#jy1Frf=W(q!13JPAoZeVhKfvP)7-dC9wvr e#I_MIJwFByoJ>w;RpX)n0000-uWJcsAB-HcsRye64=KL5XU&a`z<)YA_nlPA#p-~T`U7JLi+9Kc0=Yr{C(nk zOC@Ir(j{=BbQgx^u=JJZq1lP40qpb97`>H|&l%yYqn(|SsS7yZbmX$_q4Dws#Qhd* z!Ln-3<42l7xWoT=Gke8!>wgzyNx^#eLt^+~fbpvX#D4~;B5%Gwf@mcM^PH&HFA7F@ zz^+JkK+Y_hhiq@o6t_~vB|DKPPZse|FWX3tw`AYbv!fG=zMNiLahVZ1a-PdNw7My= zF}I|^+l2wTZPyuLB3E+n7s4}7s`AiVL7;X7IN|zogpj&xHP>Wpg zqc6!9E-YZ$iMr$|T)D^%S9TO@kgGV5SQG;KE6nu00+NdfTVY+mO~)+qL>{V;As>V` z!lr1q%@YQMl1@OsE;;+$CQlgk@+p`ApX-uyz}Y4%EvSB!_nP=T}#DWB26x^w-O_W zd~%7sd~b038WRQ!I!*GEz%gzJ6>#KpQ;%rXoTf!<2bNHm4CNL+-nE<4f>O)&oHPc` cntgkI1+Ryu*IIi9EC2ui07*qoM6N<$f @@ -1280,10 +1281,11 @@ namespace Kill.UI.Pages public void GetDeviceStatus() { List errorlist = new List(); + BLECommunicationManager.Instance.ReadHardwareStatus((status) => - { - Loom.QueueOnMainThread(() => - { + { + Loom.QueueOnMainThread(() => + { bool hasError = false; if (status.TemperatureError != 0) { @@ -1297,6 +1299,7 @@ namespace Kill.UI.Pages { error += LanguageManager.Instance.GetLanguage("100230"); } + errorlist.Add(error); } if (status.MotorError != 0) { @@ -1334,42 +1337,51 @@ namespace Kill.UI.Pages { hasError = true; string error = LanguageManager.Instance.GetLanguage("100237"); - error += LanguageManager.Instance.GetLanguage("100232"); + error += LanguageManager.Instance.GetLanguage("100238"); errorlist.Add(error); } if (status.AccelerometerError != 0) { hasError = true; string error = LanguageManager.Instance.GetLanguage("100239"); - error += LanguageManager.Instance.GetLanguage("100232"); + if (status.AccelerometerError == 1) + { + error += LanguageManager.Instance.GetLanguage("100238"); + } + else + { + error += LanguageManager.Instance.GetLanguage("100311"); + } errorlist.Add(error); } if (status.MillimeterWaveError != 0) { hasError = true; string error = LanguageManager.Instance.GetLanguage("100240"); - error += LanguageManager.Instance.GetLanguage("100232"); + error += LanguageManager.Instance.GetLanguage("100238"); errorlist.Add(error); } if (status.LidarError != 0) { hasError = true; string error = LanguageManager.Instance.GetLanguage("100241"); - error += LanguageManager.Instance.GetLanguage("100232"); + error += LanguageManager.Instance.GetLanguage("100238"); errorlist.Add(error); } - errorTipButton.gameObject.SetActive(hasError); - string fullerror = ""; - int index = 1; - foreach (string e in errorlist) - { - fullerror += $"{index}.{e}/n"; - } - deiviceErrorTip.GetComponentInChildren().text=fullerror; + errorTipButton.gameObject.SetActive(hasError); + string fullerror = ""; + int index = 1; + foreach (string e in errorlist) + { + fullerror += $"{index}.{e}\n"; + index++; + } + Debug.Log("错误提示:" + fullerror); + deiviceErrorTip.transform.Find("框").Find("提示").GetComponent().text = fullerror; - }); - }); + }); + }); } public Text lastRecordTimeTexts; diff --git a/Assets/Scripts/UI/Pages/Login/SubPages/SetPasswordPanel.cs b/Assets/Scripts/UI/Pages/Login/SubPages/SetPasswordPanel.cs index 02dd017..6f2e8bb 100644 --- a/Assets/Scripts/UI/Pages/Login/SubPages/SetPasswordPanel.cs +++ b/Assets/Scripts/UI/Pages/Login/SubPages/SetPasswordPanel.cs @@ -4,6 +4,9 @@ using Kill.Utils; using Kill.Managers; using System.Threading.Tasks; using System; +using System.Text.RegularExpressions; +using UnityEngine.WSA; +using Kill.UI.Components; namespace Kill.UI.Pages { @@ -13,22 +16,29 @@ namespace Kill.UI.Pages /// public class SetPasswordPanel : LoginSubPageBase { - [Header("输入组件")] public InputField newPasswordInput; public InputField confirmPasswordInput; - [Header("显示组件")] - public Text errorText; /// /// 密码类型提示文本0:简单密码,1:复杂密码 /// public Text[] passwordTypeTips; - [Header("按钮")] public Button confirmBtn; + public GameObject confirmBtnDisabled; /// /// 切换简单/复杂密码按钮 0简单密码选中 1简单密码未选中 2复杂密码选中 3复杂密码未选中 未选中可点击 /// public GameObject[] changeTypeBtns; + [Header("密码规则验证")] + public Sprite correctIconSprite; + public Sprite incorrectIconSprite; + public Image[] simplePasswordRules; + public Image[] complexPasswordRules; + public Image simpleConfirmMatchRule; + public Image complexConfirmMatchRule; + public GameObject simpleRulesContainer; + public GameObject complexRulesContainer; + private int passwordType = 0; private bool isConfirmEnabled = false; @@ -43,6 +53,11 @@ namespace Kill.UI.Pages Register, // 注册设置密码 ResetPassword // 忘记密码重置密码 } + void Start() + { + OnInitialize(); + OnShow(); + } protected override void OnInitialize() { if (confirmBtn != null) @@ -52,25 +67,29 @@ namespace Kill.UI.Pages changeTypeBtns[1].GetComponent