/// <summary> /// 附加窗口 /// </summary> /// <param name="_window">窗口</param> public void AttachWindow(AbsUIWindowView _window) { int layer = _window.config.layer; if (!mLayerMaping.ContainsKey(layer)) { int siblingIndex = 0; foreach (KeyValuePair <int, RectTransform> key in mLayerMaping) { if (key.Key < layer) { siblingIndex = Mathf.Max(siblingIndex, key.Value.GetSiblingIndex() + 1); } } GameObject go = new GameObject(mLayerNameMaping[_window.config.layer]); go.layer = gameObject.layer; RectTransform rt = go.AddComponent <RectTransform>(); rt.SetParent(canvas.transform, false); rt.SetSiblingIndex(siblingIndex); rt.anchorMin = Vector2.zero; rt.anchorMax = Vector2.one; rt.anchoredPosition = Vector2.zero; rt.sizeDelta = Vector2.zero; mLayerMaping.Add(layer, rt); } _window.rectTransform.SetParent(mLayerMaping[layer], false); }
/// <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> /// 关闭窗口 /// </summary> /// <param name="_window">窗口</param> void Window_OnCloseWindow(AbsUIWindowView _window) { CloseWindow(_window.config.id); }