/// <summary> /// 回收 /// </summary> protected override void OnRecycle() { mGuideCommandSender.guideWindow.RemoveGraphicMask(mGraphicMask); mGraphicMask = null; mGuideCommandSender = null; base.OnRecycle(); }
/// <summary> /// 是否是指定的遮罩 /// </summary> /// <param name="_graphicMask">遮罩</param> /// <returns>true:是,false:否</returns> public bool IsGraphic(AbsUIGuideGraphic _graphicMask) { bool result = false; if (guideGraphic != null && _graphicMask != null) { result = guideGraphic.Equals(_graphicMask); } return(result); }
/// <summary> /// 获得引导Graphic遮罩 /// </summary> /// <param name="_type">类别</param> /// <param name="_index">索引</param> /// <returns>引导Graphic遮罩</returns> public AbsUIGuideGraphic GetGraphicMask(int _type, int _index) { AbsUIGuideGraphic result = default; if (mUIGuideGraphicMaping.ContainsKey(_type) && mUIGuideGraphicMaping[_type].ContainsKey(_index)) { result = mUIGuideGraphicMaping[_type][_index]; } return(result); }
/// <summary> /// 应用遮罩 /// </summary> /// <param name="_graphic">遮罩</param> public void ApplyGraphic(AbsUIGuideGraphic _graphic) { if (_graphic != null) { guideGraphic = _graphic; mImgFramePrompt.CopyRectTransformFrom(_graphic.graphic); XLS_Config_Table_UserGuideStyle style = (XLS_Config_Table_UserGuideStyle)_graphic.styleData; mTxtGuideContent.text = style.content; SetArrowEdge(mImgArrow.rectTransform, style.enArrowAnchor); SetDescEdge(mImgDescBg.rectTransform, style.enArrowAnchor, style.contentWidth); } }
/// <summary> /// 移除GraphicMask遮罩 /// </summary> /// <param name="_graphicMask">遮罩</param> protected override void OnRemoveGraphicMask(AbsUIGuideGraphic _graphicMask) { UIGuidePrompt run = null; foreach (UIGuidePrompt p in mRunningPrompt) { if (p.IsGraphic(_graphicMask)) { run = p; break; } } run.gameObject.SetActive(false); mRunningPrompt.Remove(run); mUIGuidePromptQueue.Enqueue(run); base.OnRemoveGraphicMask(_graphicMask); }
/// <summary> /// 添加GraphicMask遮罩 /// </summary> /// <param name="_graphicMask">遮罩</param> protected override void OnAddGraphicMask(AbsUIGuideGraphic _graphicMask) { UIGuidePrompt prompt = null; if (mUIGuidePromptQueue.Count > 0) { prompt = mUIGuidePromptQueue.Dequeue(); } else { GameObject go = GameObject.Instantiate(mUIGuidePrompt.gameObject); go.AddDynamicComponent <UIGuidePrompt>(); prompt.gameObject.transform.SetParent(mUIGuidePrompt.gameObject.transform.parent, false); } prompt.gameObject.SetActive(true); prompt.ApplyGraphic(_graphicMask); mRunningPrompt.Add(prompt); base.OnAddGraphicMask(_graphicMask); }
/// <summary> /// 是否满足条件 /// </summary> /// <param name="_conditions">匹配组</param> /// <param name="_sender">引导命令</param> /// <param name="_sponsor">条件匹配发起者</param> /// <param name="_resolveStatus">解析状态</param> /// <param name="_status">当前状态</param> /// <param name="_parameters">参数</param> /// <returns>true:满足条件,false:不满足条件</returns> protected override bool OnIsMatchCondition(IGuideCommand _sender, List <AbsGuideResolveMatchCommand> _conditions, IGuideMatchConditionCommand _sponsor, enGuideStatus _resolveStatus, enGuideStatus _status, params object[] _parameters) { bool result = base.OnIsMatchCondition(_sender, _conditions, _sponsor, _resolveStatus, _status, _parameters); if (_parameters != null && mGraphicMask == null) { foreach (object p in _parameters) { if (p is AbsUIWindowView) { AbsUIWindowView w = (AbsUIWindowView)p; if (w.config.name.Equals(windowName)) { mGuideCommandSender = _sender; mControl = w.FindCtrlByNameIsSelfOrParent <UIBehaviour>(controlName); mGraphicMask = new UIGuideGraphic((int)_sender.status, w.FindCtrlByNameIsSelfOrParent <Graphic>(graphicMask), referObjectIndex); if (mControl != null) { break; } } } } } result &= mControl != null && mGraphicMask != null && mGraphicMask.graphic != null && mGraphicMask.graphic.gameObject.activeInHierarchy == mGraphicMaskActiveSelf; if (result) { UIGuideValidate validate = _sender.CreateValidateMono <UIGuideValidate>(mControl, (int)_sender.status, referObjectIndex); validate.OnEventValidate += Validate_OnEventValidate; } return(result); }
/// <summary> /// 移除GraphicMask遮罩 /// </summary> /// <param name="_graphicMask">遮罩</param> protected virtual void OnRemoveGraphicMask(AbsUIGuideGraphic _graphicMask) { }
/// <summary> /// 注销Dirty事件 /// </summary> /// <param name="_graphic">绘制</param> void OnUnRegisterDirty(AbsUIGuideGraphic _graphic) { _graphic.graphic.UnregisterDirtyLayoutCallback(OnDirtyAction); _graphic.graphic.UnregisterDirtyMaterialCallback(OnDirtyAction); _graphic.graphic.UnregisterDirtyVerticesCallback(OnDirtyAction); }