public static Behavior GetRemoveSelectedDisplayObjectBehavior(string moduleName) { List <Element> elements = GlobalData.CurrentSelectDisplayObjectDic.Select(pair => GlobalData.GetElement(pair.Key)).ToList(); int length = elements.Count; List <string> elementNames = new List <string>(); for (int idx = 0; idx < length; ++idx) { elementNames.Add(elements[idx].Name); } return(new Behavior(isReDo => DisplayObjectUtil.RemoveDisplayObjectsBehavior(moduleName, elementNames), isReUndo => { DisplayObjectUtil.AddDisplayObjectsBehavior(moduleName, elements); foreach (string elementName in elementNames) { Transform displayObject = GlobalData.CurrentDisplayObjectDic[elementName]; GlobalData.CurrentSelectDisplayObjectDic.Add(elementName, displayObject); } UlEventSystem.Dispatch <DataEventType, SelectedChangeData>(DataEventType.SelectedChange, new SelectedChangeData(moduleName, elementNames)); // MessageBroker.SendUpdateSelectDisplayObjectDic(elementNames); }, BehaviorType.RemoveSelectedDisplayObject)); }