public override bool IsAchieve(Guide.Step step)
        {
            var target = GuideManager.Instance.GetWidgetByPath(WidgetPath);

            bool nowState = false;

            if (step.DisplayType == EDisplayType.Region) // 区域显示类型的,先判断节点已经Active,再做射线检测
            {
                if (target == null || !target.activeInHierarchy)
                {
                    nowState = false;
                }
                else
                {
                    NoDrawingRayCast noDrawingRayCast = target.GetComponent <NoDrawingRayCast>();
                    if (noDrawingRayCast == null)
                    {
                        noDrawingRayCast = target.AddComponent <NoDrawingRayCast>();
                    }
                    if (noDrawingRayCast != null)
                    {
                        noDrawingRayCast.raycastTarget = true;
                    }
                    nowState = GuideManager.Instance.IsWidgetVisible(target);
                    if (noDrawingRayCast != null)
                    {
                        noDrawingRayCast.raycastTarget = false;
                    }
                }
            }
            else
            {
                nowState = GuideManager.Instance.IsWidgetVisible(target);
            }

            nowState = nowState && GuideManager.Instance.MatchComponent(target, WidgetPath);

            if (nowState && m_LastVisiable)
            {
                if (target != null)
                {
                    UIFinishGuideBtn finishGuideBtn = target.GetComponent <UIFinishGuideBtn>();
                    if (finishGuideBtn == null)
                    {
                        finishGuideBtn         = target.AddComponent <UIFinishGuideBtn>();
                        finishGuideBtn.GuideId = step.GuideId;
                        finishGuideBtn.StepId  = step.StepId;
                    }
                }

                return(true);
            }

            // 延迟一帧
            m_LastVisiable = nowState;
            return(false);
        }
        public override bool IsAchieve(Guide.Step step)
        {
            var mainmap_window = UIManager.Instance.GetWindow("UIMainmapWindow");

            if (mainmap_window == null || !mainmap_window.IsShow)
            {
                return(false);
            }

            var mainmap_system = mainmap_window.GetBehaviour("UIMainMapSysOpenBehaviour") as UIMainMapSysOpenBehaviour;

            if (mainmap_system == null)
            {
                return(false);
            }

            var sys_config = DBManager.Instance.GetDB <DBSysConfig>().GetConfigById(SysId);

            if (sys_config == null)
            {
                return(false);
            }

            var target_btn = mainmap_system.GetConfingBtn(sys_config);

            if (target_btn == null)
            {
                return(false);
            }

            if (target_btn.Btn == null)
            {
                return(false);
            }

            UIFinishGuideBtn finishGuideBtn = target_btn.Btn.gameObject.GetComponent <UIFinishGuideBtn>();

            if (finishGuideBtn == null)
            {
                finishGuideBtn         = target_btn.Btn.gameObject.AddComponent <UIFinishGuideBtn>();
                finishGuideBtn.GuideId = step.GuideId;
                finishGuideBtn.StepId  = step.StepId;
            }

            // 强制指引需要展开系统所在的按钮栏
            if (!GuideManager.Instance.IsWidgetVisible(target_btn.Btn.gameObject))
            {
                if (step.IsForcible)
                {
                    switch (sys_config.Pos)
                    {
                    case DBSysConfig.ESysBtnPos.SYS_LBBTN_POS:
                    {
                        if (SceneHelp.Instance.IsInWildInstance())
                        {
                            ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_SYS_WAIT_OPEN_SWITCH_ANIMATION, new CEventBaseArgs("LBRect"));
                            ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_GUIDE_UNFOLD_SYS_BTN, new CEventBaseArgs("LBRect"));
                        }
                        else
                        {
                            ClientEventMgr.GetInstance().PostEvent((int)ClientEvent.CE_SYS_WAIT_OPEN_SWITCH_ANIMATION, new CEventBaseArgs("LBRect"));
                            ClientEventMgr.GetInstance().PostEvent((int)ClientEvent.CE_GUIDE_UNFOLD_SYS_BTN, new CEventBaseArgs("LBRect"));
                        }
                    }
                    break;

                    case DBSysConfig.ESysBtnPos.SYS_TRBTN_POS:
                    {
                        if (SceneHelp.Instance.IsInWildInstance())
                        {
                            ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_SYS_WAIT_OPEN_SWITCH_ANIMATION, new CEventBaseArgs("TRRect"));
                        }
                        else
                        {
                            ClientEventMgr.GetInstance().PostEvent((int)ClientEvent.CE_SYS_WAIT_OPEN_SWITCH_ANIMATION, new CEventBaseArgs("TRRect"));
                        }
                    }
                    break;
                    }
                }

                return(false);
            }

            return(true);
        }