Exemplo n.º 1
0
    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);
    }
Exemplo n.º 3
0
 public override void OnShowTransition(Action onSuccess)
 {
     TweenUtil.MoveLocal(gameObject, new Vector3(0, TopPosition, 0),
                         Vector3.zero, TweenType.OutBack, MoveTime, onSuccess);
 }