using UI.Guide; using FairyGUI; using UnityEngine; using System.Collections.Generic; using System; namespace GFGGame { public class GuideView : BaseWindow { private UI_GuideUI _ui; private bool _needUpdate; private GObject guideTarget = null; private float devWidth; private float devHeight; private int guideId; private int guideIndex; private bool isOptionalGuide = false;//弱引导,点击任意地方都可关闭 private GameObject _gameObject; private GoWrapper _wrapper; public override void Dispose() { SceneController.DestroyObjectFromView(_gameObject); base.Dispose(); } protected override void OnInit() { base.OnInit(); viewAnimationType = EnumViewAnimationType.None; packageName = UI_GuideUI.PACKAGE_NAME; _ui = UI_GuideUI.Create(); this.viewCom = _ui.target; this.clickBlankToClose = false; // this.layer = ConstViewLayer.TOP; isfullScreen = true; _ui.m_rectFrame.target.AddRelation(_ui.m_mask.m_guideArea, RelationType.Width); _ui.m_rectFrame.target.AddRelation(_ui.m_mask.m_guideArea, RelationType.Height); _ui.m_rectFrame.target.AddRelation(_ui.m_mask.m_guideArea, RelationType.Left_Left); _ui.m_rectFrame.target.AddRelation(_ui.m_mask.m_guideArea, RelationType.Top_Top); _ui.target.onClick.Add(() => { if (isOptionalGuide) this.Hide(); }); string resPath0 = ResPathUtil.GetViewEffectPath("ui_yd/ui_yd_y", "ui_yd_y"); SceneController.AddObjectToView(_gameObject, _wrapper, _ui.m_holder, resPath0, out _gameObject, out _wrapper); } protected override void OnShown() { base.OnShown(); List dataList = viewData as List; guideTarget = dataList[0] as GObject; _needUpdate = (bool)dataList[1]; string txtContent = (string)dataList[2]; int yTxt = (int)dataList[3]; isOptionalGuide = (bool)dataList[4]; devWidth = (float)dataList[5]; devHeight = (float)dataList[6]; if (GuideController.useNewGuide) { guideId = (int)dataList[7]; guideIndex = (int)dataList[8]; } if (txtContent != null && txtContent.Length > 0) { _ui.m_compTxt.m_txt.text = txtContent; if (this._ui.m_compTxt.m_txt.textHeight > this._ui.m_compTxt.m_txt.textFormat.size * 2) { this._ui.m_compTxt.m_txt.align = AlignType.Left; } else { this._ui.m_compTxt.m_txt.align = AlignType.Center; } _ui.m_compTxt.target.visible = true; } else { _ui.m_compTxt.target.visible = false; } // _ui.m_rectFrameTemp.width = _ui.m_mask.target.width; // _ui.m_rectFrameTemp.height = _ui.m_mask.target.height; // _ui.m_rectFrameTemp.x = 0; // _ui.m_rectFrameTemp.y = 0; if (guideTarget != null) { UpdateGuideRect(); // _needUpdate = true; // if (_needUpdate) // { // Timers.inst.AddUpdate(UpdateGuideRect); // } _ui.m_mask.target.visible = true; if (GuideController.useNewGuide) { guideTarget.onClick.Add(OnClickTarget); if (guideTarget == null) OnClickTarget(); } } else { _ui.m_mask.target.visible = false; _ui.m_compTxt.target.y = Math.Min(yTxt, GRoot.inst.height - _ui.m_compTxt.target.height - 3); } // _ui.m_rectFrame.target.visible = _ui.m_mask.target.visible; _ui.m_rectFrame.target.visible = false; // _ui.m_rectFrameTemp.visible = _ui.m_mask.target.visible; } protected override void OnHide() { // Timers.inst.Remove(UpdateGuideRect); base.OnHide(); _ui.m_holder.visible = false; OnClickTarget(); guideTarget = null; } private void UpdateGuideRect(object param = null) { if (guideTarget != null) { Rect rect = guideTarget.TransformRect(new Rect(0 + devWidth, devHeight, guideTarget.width, guideTarget.height), _ui.target); _ui.m_mask.m_guideArea.size = new Vector2((int)rect.size.x, (int)rect.size.y); _ui.m_mask.m_guideArea.position = new Vector2((int)rect.position.x, (int)rect.position.y); float x = _ui.m_mask.m_guideArea.position.x + _ui.m_mask.m_guideArea.size.x * 0.5f; float y = _ui.m_mask.m_guideArea.position.y + _ui.m_mask.m_guideArea.size.y * 0.5f; _ui.m_holder.position = new Vector2(x, y); int padding = 30; bool atBottom = _ui.m_mask.m_guideArea.y + _ui.m_mask.m_guideArea.height + padding + _ui.m_compTxt.target.height + padding > GRoot.inst.height; if (atBottom) { _ui.m_compTxt.target.y = _ui.m_mask.m_guideArea.y - _ui.m_compTxt.target.height - padding; } else { _ui.m_compTxt.target.y = _ui.m_mask.m_guideArea.y + _ui.m_mask.m_guideArea.height + padding; } // int targetWidth = 20; // if (Mathf.Abs(_ui.m_rectFrameTemp.width - _ui.m_rectFrame.target.width) > targetWidth && Mathf.Abs(_ui.m_rectFrameTemp.height - _ui.m_rectFrame.target.height) > targetWidth) // { // _ui.m_rectFrameTemp.visible = true; // float duration = 0.5f; // _ui.m_rectFrameTemp.TweenResize(new Vector2(_ui.m_rectFrame.target.width, _ui.m_rectFrame.target.height), duration); // _ui.m_rectFrameTemp.TweenMove(new Vector2(_ui.m_rectFrame.target.x, _ui.m_rectFrame.target.y), duration); // } // else // { _ui.m_rectFrameTemp.visible = false; // _ui.m_rectFrame.target.visible = _ui.m_mask.target.visible; _ui.m_holder.visible = _ui.m_mask.target.visible; // } } } private void OnClickTarget() { // if (guideTarget == null) return; if (guideTarget != null) guideTarget.onClick.Remove(OnClickTarget); GuideController.TryCompleteGuideIndex(guideId, guideIndex); } } }