diff --git a/Assets/Scripts/Actions/ShowAction.cs b/Assets/Scripts/Actions/ShowAction.cs index d92ba11c..096d196a 100644 --- a/Assets/Scripts/Actions/ShowAction.cs +++ b/Assets/Scripts/Actions/ShowAction.cs @@ -20,6 +20,7 @@ public class ShowAction : IAction string isShow = string.Empty; string deviceName = string.Empty; string isDevice = string.Empty; + string isRoot = string.Empty; public static ShowAction Allocate(string path, Dictionary datas, System.Action onDelayFinish = null) { var retNode = mPool.Allocate(); @@ -30,6 +31,7 @@ public class ShowAction : IAction retNode.isShow = datas.ContainsKey("isShow") ? datas["isShow"] : string.Empty; retNode.deviceName = datas.ContainsKey("deviceName") ? datas["deviceName"] : string.Empty; retNode.isDevice = datas.ContainsKey("isDevice") ? datas["isDevice"] : string.Empty; + retNode.isRoot = datas.ContainsKey("isRoot") ? datas["isRoot"] : null; return retNode; } @@ -79,7 +81,17 @@ public class ShowAction : IAction { bool isActive = true; bool.TryParse(isShow, out isActive); - obj.SetActive(isActive); + if (string.IsNullOrEmpty(isRoot)) + { + obj.SetActive(isActive); + } + else if (isRoot == "true") + { + for (int i = 0; i < obj.transform.childCount; i++) + { + obj.transform.GetChild(i).gameObject.SetActive(isActive); + } + } } this.Finish(); diff --git a/Assets/Scripts/Xml/XmlParser.cs b/Assets/Scripts/Xml/XmlParser.cs index 86842e1d..cd411904 100644 --- a/Assets/Scripts/Xml/XmlParser.cs +++ b/Assets/Scripts/Xml/XmlParser.cs @@ -593,6 +593,11 @@ namespace XMLTool { act.args.Add("deviceName", deviceName.Value); } + XAttribute isRoot = action.Attribute("isRoot"); + if (isRoot != null) + { + act.args.Add("isRoot", isRoot.Value); + } newAction = act; } break;