private void _onStartAnim(ViewStatus status, UIAnimResult callback) { mIsPlayinngAni = true; UIAnimResult _callback = (bool ret) => { switch (status) { case ViewStatus.onHideBegin: gameObject.SetActive(false); this.onDisabled(); this._onLuaStatusChange(ViewStatus.onDisable); break; case ViewStatus.onShowBegin: this.onEnabled(); this._onLuaStatusChange(ViewStatus.onEnable); //gameObject.SetActive(true); break; } mIsPlayinngAni = false; //Debug.LogWarningFormat("status:{0}", status.ToString()); if (null != callback) { callback(ret); } }; if (null != mLuaFuncs) { LuaFunction func = _getLuaFunc(status.ToString()); if (null != func) { OnAnimCallbcak = _callback; func.Call(); return; } } //不在lua上修改动画直接使用C#定义的 switch (status) { case ViewStatus.onHideBegin: onHide(_callback); break; case ViewStatus.onShowBegin: onShow(_callback); gameObject.SetActive(true); break; } }
/// <summary> /// 准备显示的处理,可以在这里做打开动画,同时有lua和c#代码时执行lua /// </summary> public void ShowAnim(UIAnimResult callback) { onStartAnim(ViewStatus.onShowBegin, callback); }
/// <summary> /// 通过GameUImanager关闭View /// </summary> /// <param name="callback">Callback.</param> public void Hide(UIAnimResult callback) { GameUIManager.Instance.HideView(this, callback); }
/// <summary> /// 通过GameUImanager显示View /// </summary> /// <param name="callback">Callback.</param> public void Show(UIAnimResult callback) { GameUIManager.Instance.ShowViewObj(this, callback); }
protected void runAnimTween(ViewAnimType animType, bool revert, UIAnimResult result) { if (null != mAnimTween && mAnimTween.IsActive()) { mAnimTween.Kill(); mAnimTween = null; } switch (animType) { case ViewAnimType.none: result(true); break; case ViewAnimType.moveUp: if (!revert) { float posY = mRectTransform.localPosition.y; mAnimTween = mRectTransform.DOLocalMoveY(posY - AnimValue, AnimTime).SetEase(AnimEase).OnComplete(() => result(true)); } else { mAnimTween = mRectTransform.DOLocalMoveY(-AnimValue, AnimTime).From(true).SetEase(AnimEase).OnComplete(() => result(true)); } break; case ViewAnimType.moveDown: if (!revert) { float posY = mRectTransform.localPosition.y; mAnimTween = mRectTransform.DOLocalMoveY(posY + AnimValue, AnimTime).SetEase(AnimEase).OnComplete(() => result(true)); } else { mAnimTween = mRectTransform.DOLocalMoveY(AnimValue, AnimTime).From(true).SetEase(AnimEase).OnComplete(() => result(true)); } break; case ViewAnimType.move2Left: if (!revert) { float posX = mRectTransform.localPosition.x; mAnimTween = mRectTransform.DOLocalMoveX(posX + AnimValue, AnimTime).OnComplete(() => result(true)); } else { mAnimTween = mRectTransform.DOLocalMoveX(AnimValue, AnimTime).From(true).OnComplete(() => result(true)); } break; case ViewAnimType.move2Right: if (!revert) { float posX = mRectTransform.localPosition.x; mAnimTween = mRectTransform.DOLocalMoveX(posX - AnimValue, AnimTime).OnComplete(() => result(true)); } else { mAnimTween = mRectTransform.DOLocalMoveX(-AnimValue, AnimTime).From(true).OnComplete(() => result(true)); } break; case ViewAnimType.zoom: if (!revert) { mAnimTween = transform.DOScale(0f, AnimTime).OnComplete(() => result(true)); } else { transform.localScale = Vector3.zero; mAnimTween = transform.DOScale(AnimValue, AnimTime).OnComplete(() => result(true)); } break; } }
/// <summary> /// 准备关闭的处理,可以在这里做关闭动画 /// </summary> protected virtual void onHide(UIAnimResult callback) { runAnimTween(AnimType, false, callback); //callback(true); }
/// <summary> /// 准备显示的处理,可以在这里做打开动画,同时有lua和c#代码时执行lua /// </summary> protected virtual void onShow(UIAnimResult callback) { gameObject.SetActive(true); runAnimTween(AnimType, true, callback); //callback(true); }
/// <summary> /// 准备关闭的处理,可以在这里做关闭动画 /// </summary> public void HideAnim(UIAnimResult callback) { onStartAnim(ViewStatus.onHideBegin, callback); }
/// <summary> /// 通过GameUImanager关闭View /// </summary> /// <param name="callback">Callback.</param> public void Hide(UIAnimResult callback) { UIMgr.Instance.HideView(this, callback); }
/// <summary> /// 通过GameUImanager显示View /// </summary> /// <param name="callback">Callback.</param> public void Show(UIAnimResult callback) { UIMgr.Instance.ShowViewObj(this, callback); }
protected void runAnimTween(ViewAnimType animType, bool isShow, UIAnimResult result) { if (null != mAnimTween && mAnimTween.IsActive()) { mAnimTween.Kill(); mAnimTween = null; } if (!_animNeeded(isShow)) { result(true); return; } float value = _getAnimValue(); switch (animType) { //case ViewAnimType.none : //result(true); //break; case ViewAnimType.moveUp: if (!isShow) { float posY = mRectTransform.localPosition.y; mAnimTween = mRectTransform.DOLocalMoveY(posY - value, AnimTime).SetEase(AnimEase).OnComplete(() => result(true)); } else { mAnimTween = mRectTransform.DOLocalMoveY(-value, AnimTime).From(true).SetEase(AnimEase).OnComplete(() => result(true)); } break; case ViewAnimType.moveDown: if (!isShow) { float posY = mRectTransform.localPosition.y; mAnimTween = mRectTransform.DOLocalMoveY(posY + value, AnimTime).SetEase(AnimEase).OnComplete(() => result(true)); } else { mAnimTween = mRectTransform.DOLocalMoveY(value, AnimTime).From(true).SetEase(AnimEase).OnComplete(() => result(true)); } break; case ViewAnimType.move2Left: if (!isShow) { float posX = mRectTransform.localPosition.x; mAnimTween = mRectTransform.DOLocalMoveX(posX + value, AnimTime).OnComplete(() => result(true)); } else { mAnimTween = mRectTransform.DOLocalMoveX(value, AnimTime).From(true).OnComplete(() => result(true)); } break; case ViewAnimType.move2Right: if (!isShow) { float posX = mRectTransform.localPosition.x; mAnimTween = mRectTransform.DOLocalMoveX(posX - value, AnimTime).OnComplete(() => result(true)); } else { mAnimTween = mRectTransform.DOLocalMoveX(-value, AnimTime).From(true).OnComplete(() => result(true)); } break; case ViewAnimType.zoom: if (!isShow) { mAnimTween = transform.DOScale(0f, AnimTime).OnComplete(() => result(true)); } else { transform.localScale = Vector3.zero; mAnimTween = transform.DOScale(value, AnimTime).OnComplete(() => result(true)); } break; } }