diff --git a/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs b/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs index 6ff7d928..359c8d97 100644 --- a/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs +++ b/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs @@ -411,5 +411,16 @@ public class Utility } } - + // 使用Unity的Random实现洗牌 + public static void Shuffle(IList list) + { + int n = list.Count; + for (int i = n - 1; i > 0; i--) + { + int j = UnityEngine.Random.Range(0, i + 1); + T temp = list[i]; + list[i] = list[j]; + list[j] = temp; + } + } } \ No newline at end of file diff --git a/Assets/Scripts/Actions/UIToolsAction.cs b/Assets/Scripts/Actions/UIToolsAction.cs index df5ebfab..0861ae3d 100644 --- a/Assets/Scripts/Actions/UIToolsAction.cs +++ b/Assets/Scripts/Actions/UIToolsAction.cs @@ -26,6 +26,8 @@ public class UIToolsAction : IAction string totalScore; string scoreStepName; string autoHide; + string random; + string scrollSpeed; public static UIToolsAction Allocate(Dictionary datas, System.Action onDelayFinish = null) { var retNode = mPool.Allocate(); @@ -44,6 +46,8 @@ public class UIToolsAction : IAction retNode.totalScore = datas.ContainsKey("totalScore") ? datas["totalScore"] : ""; retNode.scoreStepName = datas.ContainsKey("scoreStepName") ? datas["scoreStepName"] : ""; retNode.autoHide = datas.ContainsKey("autoHide") ? datas["autoHide"] : ""; + retNode.random = datas.ContainsKey("random") ? datas["random"] : ""; + retNode.scrollSpeed = datas.ContainsKey("scrollSpeed") ? datas["scrollSpeed"] : ""; return retNode; } @@ -80,6 +84,15 @@ public class UIToolsAction : IAction float.TryParse(totalScore, out data.totalScore); data.scoreStepName = scoreStepName; bool.TryParse(setActive, out data.SetActive); + if (bool.TryParse(random, out data.random) == false) + { + data.random = false; + } + if (float.TryParse(scrollSpeed, out data.scrollSpeed) == false) + { + data.scrollSpeed = 25; + } + if (float.TryParse(autoHide, out data.autoHideResult) == false) { data.autoHideResult = -1; diff --git a/Assets/Scripts/UI/UITools.cs b/Assets/Scripts/UI/UITools.cs index 17f4273c..1b9de38a 100644 --- a/Assets/Scripts/UI/UITools.cs +++ b/Assets/Scripts/UI/UITools.cs @@ -23,6 +23,8 @@ namespace QFramework.Example public float totalScore; public string scoreStepName; public float autoHideResult = -1; + public bool random = false; + public float scrollSpeed = 25; } public partial class UITools : UIPanel { @@ -55,6 +57,11 @@ namespace QFramework.Example answers = mData.answer.Split(',')?.ToList(); } Content.RemoveAllChildren(); + if (mData.devices.Count > 0 && mData.random) + { + Utility.Shuffle(mData.devices); + } + Scroll.scrollSensitivity = mData.scrollSpeed; foreach (var device in mData.devices) { var item = DeviceController.Instance.GetDevice(device); diff --git a/Assets/Scripts/Xml/XmlParser.cs b/Assets/Scripts/Xml/XmlParser.cs index 4526393c..ebf68358 100644 --- a/Assets/Scripts/Xml/XmlParser.cs +++ b/Assets/Scripts/Xml/XmlParser.cs @@ -570,6 +570,16 @@ namespace XMLTool { act.args.Add("autoHide", autoHide.Value); } + var random = action.Attribute("random"); + if (random != null) + { + act.args.Add("random", random.Value); + } + var scrollSpeed = action.Attribute("scrollSpeed"); + if (scrollSpeed != null) + { + act.args.Add("scrollSpeed", scrollSpeed.Value); + } newAction = act; } break; diff --git a/Doc/Xml配置文档.xml b/Doc/Xml配置文档.xml index 3b1b7599..17a52109 100644 --- a/Doc/Xml配置文档.xml +++ b/Doc/Xml配置文档.xml @@ -29,7 +29,9 @@ + totalScore 是配合wrongScore的用于初始化一个分数 然后选择扣分 + random 是否打乱devices的顺序 + scrollSpeed 鼠标滚轮的滑动速度--> + autoHide="-1" + random="true" + scrollSpeed="25">