private void SlideScreen(Type screenType, object data, string sceneName, bool isBack, Action onSuccess) { var currentScreen = GetCurrentScreen(); LoadObject(screenType, ScreenParent, obj => { var uiRect = GetComponent <RectTransform>(); var screenRect = obj.GetComponent <RectTransform>(); var screenParentRect = ScreenParent.GetComponent <RectTransform>(); ActiveObject(obj, data, null, () => { screenRect.anchoredPosition = new Vector2(isBack ? -uiRect.sizeDelta.x : uiRect.sizeDelta.x, 0); var to = new Vector3(isBack ? uiRect.sizeDelta.x : -uiRect.sizeDelta.x, 0, 0); TweenUtil.MoveLocal(ScreenParent.gameObject, Vector3.zero, to, TweenType.Linear, 0.5f, () => { if (currentScreen != null) { DeactivateObject(currentScreen.GetType(), null); } screenParentRect.anchoredPosition = Vector2.zero; screenRect.anchoredPosition = Vector2.zero; _currentScreen = obj.GetComponent <Screen>(); if (isBack) { _currentScreen.OnBack(); } else { if (_lastScreenData != null) { _lastScreenData.IsSlide = true; _screenHistory.Push(_lastScreenData); } } _lastScreenData = new SwitchScreenData { ScreenType = screenType, Data = data, SceneName = sceneName }; _onSwitchScreen.Execute(_currentScreen); onSuccess.Execute(); }); }); }); }
private static int MoveLocal(IntPtr L) { int result; try { ToLua.CheckArgsCount(L, 7); GameObject gameObject = (GameObject)ToLua.CheckUnityObject(L, 1, typeof(GameObject)); Vector3 to = ToLua.ToVector3(L, 2); float time = (float)LuaDLL.luaL_checknumber(L, 3); int type = (int)LuaDLL.luaL_checknumber(L, 4); float delay = (float)LuaDLL.luaL_checknumber(L, 5); LuaFunction finishToDo = ToLua.CheckLuaFunction(L, 6); object para = ToLua.ToVarObject(L, 7); TweenUtil.MoveLocal(gameObject, to, time, type, delay, finishToDo, para); result = 0; } catch (Exception e) { result = LuaDLL.toluaL_exception(L, e, null); } return(result); }
public override void OnShowTransition(Action onSuccess) { TweenUtil.MoveLocal(gameObject, new Vector3(0, TopPosition, 0), Vector3.zero, TweenType.OutBack, MoveTime, onSuccess); }