| 
					
				 | 
			
			
				@@ -3,10 +3,11 @@ using System.Collections.Generic; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using UnityEngine; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using UnityEngine.UI; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using UnityEngine.SceneManagement; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using System.Linq; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 namespace SmartBow 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public class SettingsView : MonoBehaviour, MenuBackInterface 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public class SettingsView : JCUnityLib.ViewBase, MenuBackInterface 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [SerializeField] Transform panelLeftContent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [SerializeField] Transform BtnNewUserObj; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -16,16 +17,93 @@ namespace SmartBow 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             PersistenHandler.ins?.menuBackCtr.views.Add(this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //ShowBoxSound(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (CommonConfig.bInfraredApp) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            switch (CommonConfig.OP) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case OperatingPlatform.A: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (CommonConfig.bInfraredApp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //隐藏弓到屏幕的距离 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Dictionary<string, Transform> actionMapInfrared= new Dictionary<string, Transform> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnSound", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnLanguage", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnNewUser", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnLevel", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnUserAgreement", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnPrivacyPolicy", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnAboutUs", null } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        SortChildObjects(actionMapInfrared); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Dictionary<string, Transform> actionMapA = new Dictionary<string, Transform> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnSound", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnLanguage", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnNewUser", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnScreenDistance", null },//弓到屏幕的距离 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnLevel", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnUserAgreement", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnPrivacyPolicy", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnAboutUs", null } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //隐藏弓到屏幕的距离 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                foreach (Transform item in panelLeftContent) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (item.name == "BtnScreenDistance") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        item.gameObject.SetActive(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        SortChildObjects(actionMapA); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case OperatingPlatform.B: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 定义排序字典 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Dictionary<string, Transform> actionMapB = new Dictionary<string, Transform> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { "BtnSound", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { "BtnLanguage", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { "BtnLevel", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { "BtnUserSettings", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { "BtnBackStageManagement", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { "BtnAboutUs", null } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    SortChildObjects(actionMapB); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case OperatingPlatform.C: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //隐藏弓到屏幕的距离 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Dictionary<string, Transform> actionMapInfraredC = new Dictionary<string, Transform> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnSound", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnLanguage", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnNewUser", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnLevel", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnUserAgreement", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnPrivacyPolicy", null }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { "BtnAboutUs", null } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    SortChildObjects(actionMapInfraredC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        void SortChildObjects(Dictionary<string, Transform> actionMap) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 查找子对象并按名称填充 actionMap 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            foreach (Transform child in panelLeftContent) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (actionMap.ContainsKey(child.name)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    actionMap[child.name] = child; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 如果子对象不在 actionMap 中,则隐藏它 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    child.gameObject.SetActive(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ShowBoxScreenDistance(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 获取按字典定义顺序的子对象列表(过滤掉未找到的对象) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var sortedChildren = actionMap.Values.Where(child => child != null).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 重新排列子对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (int i = 0; i < sortedChildren.Count; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sortedChildren[i].SetSiblingIndex(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -71,17 +149,58 @@ namespace SmartBow 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         void ShowBox(string itemName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ShowBoxSound(itemName == "BtnSound"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ShowBoxLevel(itemName == "BtnLevel"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ShowBoxNewUser(itemName == "BtnNewUser"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!CommonConfig.bInfraredApp)ShowBoxScreenDistance(itemName == "BtnScreenDistance"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ShowBoxLanguage(itemName == "BtnLanguage"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ShowBoxUserAgreement(itemName == "BtnUserAgreement"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ShowBoxPrivacyPolicy(itemName == "BtnPrivacyPolicy"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ShowBoxAboutUs(itemName == "BtnAboutUs"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 定义所有 ShowBox 方法,并将初始状态设为 false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var actionMap = new Dictionary<string, System.Action<bool>> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { "BtnSound", ShowBoxSound }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { "BtnLevel", ShowBoxLevel }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { "BtnNewUser", ShowBoxNewUser }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { "BtnUserSettings", ShowBoxUserSettings }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { "BtnBackStageManagement",ShowBackStageManagement}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { "BtnLanguage", ShowBoxLanguage }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { "BtnUserAgreement", ShowBoxUserAgreement }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { "BtnPrivacyPolicy", ShowBoxPrivacyPolicy }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { "BtnAboutUs", ShowBoxAboutUs } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 如果不是红外应用,则包括 BtnScreenDistance 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!CommonConfig.bInfraredApp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                actionMap["BtnScreenDistance"] = ShowBoxScreenDistance; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 先将所有状态设为 false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            foreach (var action in actionMap.Values) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                action(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 将指定的 itemName 对应的按钮设为 true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (actionMap.TryGetValue(itemName, out var selectedAction)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                selectedAction(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //void ShowBox(string itemName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //    ShowBoxSound(itemName == "BtnSound"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //    ShowBoxLevel(itemName == "BtnLevel"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //    ShowBoxNewUser(itemName == "BtnNewUser"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //    ShowBoxUserSettings(itemName == "BtnUserSettings"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //    if (!CommonConfig.bInfraredApp)ShowBoxScreenDistance(itemName == "BtnScreenDistance"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //    ShowBoxLanguage(itemName == "BtnLanguage"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //    ShowBoxUserAgreement(itemName == "BtnUserAgreement"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //    ShowBoxPrivacyPolicy(itemName == "BtnPrivacyPolicy"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //    ShowBoxAboutUs(itemName == "BtnAboutUs"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void ShowBoxUserSettings(bool show) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            transform.Find("PanelContent/BoxUserSettings").gameObject.SetActive(show); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void ShowBackStageManagement(bool show) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            transform.Find("PanelContent/BoxBackStageManagement").gameObject.SetActive(show); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public void ShowBoxSound(bool show) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 |