public static void CreateScript(RectTransform rect,
                                        UIPipelineType pipelineType)
        {
            var creator = new YuLegoPipelineHandlerScriptCreator(rect, pipelineType);

            creator.CreateScript();
        }
        private void InvokePipeline(UIPipelineType pipeline)
        {
            if (pipelineHandlers.Count == 0)
            {
                return;
            }

            if (!pipelineHandlers.ContainsKey(pipeline))
            {
                return;
            }

            var handlers = pipelineHandlers[pipeline];

            if (handlers.Count == 0)
            {
                return;
            }

            try
            {
                foreach (var handler in handlers)
                {
                    handler.Execute(this);
                }
            }
            catch (Exception e)
            {
#if DEBUG
                Debug.LogError(e.Message + e.StackTrace);
#endif
            }
        }
 private YuLegoPipelineHandlerScriptCreator(RectTransform rect,
                                            UIPipelineType pipelineType)
 {
     //this.u3DAppSetting = u3DAppSetting;
     uiRect            = rect;
     this.pipelineType = pipelineType;
 }
            private static void CreateLegoUIPipelineHandler(UIPipelineType pipelineType)
            {
                if (CurrentGo.GetComponent <YuLegoViewHelper>() == null &&
                    CurrentGo.GetComponent <YuLegoComponentHelper>() == null)
                {
                    EditorUtility.DisplayDialog(
                        "错误",
                        "必须是一个界面或者组件!",
                        "OK"
                        );

                    return;
                }

                YuLegoPipelineHandlerScriptCreator.CreateScript(
                    CurrentGo.GetComponent <RectTransform>(), pipelineType);
                AssetDatabase.Refresh();
            }
        public void Register(string id, UIPipelineType pipelineType, Action <ILegoUI> callback)
        {
            if (!PipelineActions.ContainsKey(id))
            {
                PipelineActions.Add(id, new Dictionary <UIPipelineType, List <Action <ILegoUI> > >());
            }

            var uiActions = PipelineActions[id];

            if (!uiActions.ContainsKey(pipelineType))
            {
                uiActions.Add(pipelineType, new List <Action <ILegoUI> >());
            }

            var actions = uiActions[pipelineType];

            if (!actions.Contains(callback))
            {
                actions.Add(callback);
            }
        }
        public List <Action <ILegoUI> > GetPipelineAction(string id, UIPipelineType pipelineType)
        {
            if (!PipelineActions.ContainsKey(id))
            {
#if DEBUG
                Debug.LogError($"目标UI{id}没有生命周期委托存在!");
#endif
                return(null);
            }

            var uiActions = PipelineActions[id];
            if (uiActions.ContainsKey(pipelineType))
            {
#if DEBUG
                Debug.LogError($"目标UI{id}的生命周期{pipelineType}没有对应的委托存在!");
#endif
                return(null);
            }

            var actions = uiActions[pipelineType];
            return(actions);
        }
        public void Remove(string id, UIPipelineType pipelineType, Action <ILegoUI> callback)
        {
            if (!PipelineActions.ContainsKey(id))
            {
                return;
            }

            var uiActions = PipelineActions[id];

            if (!uiActions.ContainsKey(pipelineType))
            {
                return;
            }

            var actions = uiActions[pipelineType];

            if (!actions.Contains(callback))
            {
                return;
            }

            actions.Remove(callback);
        }