Exemplo n.º 1
0
    /// <summary>
    /// 关闭UI
    /// </summary>
    /// <param name="UI">目标UI</param>
    /// <param name="isPlayAnim">是否播放关闭动画</param>
    /// <param name="callback">动画播放完毕回调</param>
    /// <param name="objs">回调传参</param>
    public static void CloseUIWindow(UIWindowBase UI, bool isPlayAnim = true, UICallBack callback = null, params object[] objs)
    {
        RemoveUI(UI);        //移除UI引用
        UI.RemoveAllListener();
        //s_UILayerManager.RemoveUI(UI);

        if (isPlayAnim)
        {
            //动画播放完毕删除UI
            if (callback != null)
            {
                callback += CloseUIWindowCallBack;
            }
            else
            {
                callback = CloseUIWindowCallBack;
            }
            UI.windowStatus = UIWindowBase.WindowStatus.CloseAnim;
            UIAnimManager.StartExitAnim(UI, callback, objs);
        }
        else
        {
            CloseUIWindowCallBack(UI, objs);
        }
    }
Exemplo n.º 2
0
        public virtual IEnumerator ExitAnim(UIAnimCallBack l_animComplete, UICallBack l_callBack)
        {
            //默认无动画
            l_animComplete(this, l_callBack);

            yield break;
        }
Exemplo n.º 3
0
 public static void OpenUIAsync(string UIName, UICallBack callback, params object[] objs)
 {
     ResourceManager.LoadAsync(UIName, (resObject) =>
     {
         OpenUIWindow(UIName, callback, objs);
     });
 }
Exemplo n.º 4
0
    /// <summary>
    /// 打开window
    /// </summary>
    /// <param name="uiCallBack"></param>
    /// <param name="objs"></param>
    /// <returns></returns>
    public T OpenWindow <T>(bool openAnim = true, UICallBack uiCallBack = null, params object[] objs) where T : UIWindowBase
    {
        string windowName = typeof(T).Name;

        if (!_windowDict.ContainsKey(windowName))
        {
            LoadWindow(windowName);
        }
        T window = _windowDict[windowName] as T;

        //window.transform.SetAsLastSibling();
        window.OnOpen(objs);
        window.Status = UIStatus.Open;
        if (openAnim)
        {
            window.StartCoroutine(window.StartOpenAnim(uiCallBack, objs));
        }
        if (_windowStack.Count > 0)
        {
            var curTopWindow = _windowStack.Peek();
            if (curTopWindow != null)
            {
                curTopWindow.OnLostFocus();
            }
        }
        window.OnFocus();
        _windowStack.Push(window);
        return(window);
    }
Exemplo n.º 5
0
    /// <summary>
    /// 打开UI
    /// </summary>
    /// <param name="UIName">UI名</param>
    /// <param name="callback">动画播放完毕回调</param>
    /// <param name="objs">回调传参</param>`
    /// <returns>返回打开的UI</returns>
    public static UIWindowBase OpenUIWindow(string UIName, UICallBack callback = null, params object[] objs)
    {
        //从隐藏UI中取出
        var uiBase = GetHideUI(UIName);

        if (uiBase == null)
        {
            uiBase = CreateUIWindow(UIName);
        }

        //从隐藏UI中删除
        RemoveHideUI(uiBase);

        //加入显示中UI
        AddUI(uiBase);

        //派发OnOpen事件
        UISystemEvent.Dispatch(uiBase, UIEvent.OnOpen);
        try
        {
            uiBase.OnOpen();
        }
        catch (Exception e)
        {
            Debug.LogError(UIName + " OnOpen Exception: " + e.ToString());
        }

        //设置层级
        m_uiLayerManager.SetLayer(uiBase);

        //播放动画
        m_uiAnimManager.StartEnterAnim(uiBase, callback, objs);

        return(uiBase);
    }
Exemplo n.º 6
0
    /// <summary>
    /// 关闭UI
    /// </summary>
    /// <param name="UI">目标UI</param>
    /// <param name="isPlayAnim">是否播放关闭动画</param>
    /// <param name="callback">动画播放完毕回调</param>
    /// <param name="objs">回调传参</param>
    public static void CloseUIWindow(UIWindowBase UI, bool isPlayAnim = true, UICallBack callback = null, params object[] objs)
    {
        //从显示UI中移除UI
        RemoveUI(UI);

        //层级管理
        m_uiLayerManager.RemoveUI(UI);

        //是否有退出动画
        if (isPlayAnim)
        {
            //动画播放完毕删除UI
            if (callback != null)
            {
                callback += CloseUIWindowCallBack;
            }
            else
            {
                callback = CloseUIWindowCallBack;
            }

            m_uiAnimManager.StartExitAnim(UI, callback, objs);
        }
        else
        {
            CloseUIWindowCallBack(UI, objs);
        }
    }
Exemplo n.º 7
0
    /// <summary>
    /// 打开UI
    /// </summary>
    /// <param name="l_UIname">UI名</param>
    /// <param name="l_callback">动画播放完毕回调</param>
    /// <param name="l_objs">回调传参</param>
    /// <returns>返回打开的UI</returns>
    public static UIWindowBase OpenUIWindow(string l_UIname, UICallBack l_callback = null, params object[] l_objs)
    {
        UIWindowBase l_UIbase = GetHideUI(l_UIname);

        if (l_UIbase == null)
        {
            l_UIbase = CreateUIWindow(l_UIname);
        }

        RemoveHideUI(l_UIbase);
        AddUI(l_UIbase);

        UISystemEvent.Dispatch(l_UIbase, UIEvent.OnOpen);  //派发OnOpen事件
        try{
            l_UIbase.OnOpen();
        }
        catch (Exception e)
        {
            Debug.LogError("OnOpen Exception: " + e.ToString());
        }

        s_UILayerManager.SetLayer(l_UIbase);                          //设置层级
        s_UIAnimManager.StartEnterAnim(l_UIbase, l_callback, l_objs); //播放动画
        return(l_UIbase);
    }
Exemplo n.º 8
0
    public virtual IEnumerator ExitAnim(UIAnimCallBack l_animComplete, UICallBack l_callBack, params object[] objs)
    {
        //默认无动画
        l_animComplete(this, l_callBack, objs);

        yield break;
    }
Exemplo n.º 9
0
    /// <summary>
    /// 打开UI
    /// </summary>
    /// <param name="UIName">UI名</param>
    /// <param name="callback">动画播放完毕回调</param>
    /// <param name="objs">回调传参</param>
    /// <returns>返回打开的UI</returns>
    public static UIWindowBase OpenUIWindow(string UIName, UICallBack callback = null, params object[] objs)
    {
        UIWindowBase UIbase = GetHideUI(UIName);

        if (UIbase == null)
        {
            UIbase = CreateUIWindow(UIName);
        }
        else
        {
            UIbase.gameObject.SetActive(true);
        }

        RemoveHideUI(UIbase);
        AddUI(UIbase);

        UISystemEvent.Dispatch(UIbase, UIEvent.OnOpen);  //派发OnOpen事件
        try{
            UIbase.OnOpen();
        }
        catch (Exception e)
        {
            Debug.LogError("OnOpen Exception: " + e.ToString());
        }

        s_UILayerManager.SetLayer(UIbase);                      //设置层级
        s_UIAnimManager.StartEnterAnim(UIbase, callback, objs); //播放动画
        return(UIbase);
    }
Exemplo n.º 10
0
    static int OpenUIWindow(IntPtr L)
    {
        try
        {
            int        count     = LuaDLL.lua_gettop(L);
            string     arg0      = ToLua.CheckString(L, 1);
            UICallBack arg1      = null;
            LuaTypes   funcType2 = LuaDLL.lua_type(L, 2);

            if (funcType2 != LuaTypes.LUA_TFUNCTION)
            {
                arg1 = (UICallBack)ToLua.CheckObject(L, 2, typeof(UICallBack));
            }
            else
            {
                LuaFunction func = ToLua.ToLuaFunction(L, 2);
                arg1 = DelegateFactory.CreateDelegate(typeof(UICallBack), func) as UICallBack;
            }

            object[]     arg2 = ToLua.ToParamsObject(L, 3, count - 2);
            UIWindowBase o    = UIManager.OpenUIWindow(arg0, arg1, arg2);
            ToLua.Push(L, o);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Exemplo n.º 11
0
    static int RemoveAllUIEvent(IntPtr L)
    {
        try
        {
            ToLua.CheckArgsCount(L, 2);
            UIEvent    arg0      = (UIEvent)ToLua.CheckObject(L, 1, typeof(UIEvent));
            UICallBack arg1      = null;
            LuaTypes   funcType2 = LuaDLL.lua_type(L, 2);

            if (funcType2 != LuaTypes.LUA_TFUNCTION)
            {
                arg1 = (UICallBack)ToLua.CheckObject(L, 2, typeof(UICallBack));
            }
            else
            {
                LuaFunction func = ToLua.ToLuaFunction(L, 2);
                arg1 = DelegateFactory.CreateDelegate(typeof(UICallBack), func) as UICallBack;
            }

            UISystemEvent.RemoveAllUIEvent(arg0, arg1);
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Exemplo n.º 12
0
    IEnumerator LoadSceneAsyncIE(int levelId, Action onComplete)
    {
        string     levelName = "Level_" + levelId;
        bool       complete  = false;
        UICallBack callback  = (objs) =>
        {
            complete = true;
        };
        UILoadingWindow loadingWindow = UIManager.Instance.OpenWindow <UILoadingWindow>(true, callback);

        while (!complete)
        {
            yield return(null);
        }
        var asyncOperation = SceneManager.LoadSceneAsync(levelName);

        asyncOperation.completed           += (op) => { onComplete?.Invoke(); };
        asyncOperation.allowSceneActivation = false;
        while (asyncOperation.progress < 0.9f)
        {
            loadingWindow.SetProgress(asyncOperation.progress / 9 * 10);
            yield return(null);
        }
        loadingWindow.SetProgress(1);
        while (loadingWindow.Progress < 1)
        {
            yield return(null);
        }
        yield return(new WaitForSeconds(LoadCompleteDelay));

        UIManager.Instance.CloseWindow(loadingWindow);
        asyncOperation.allowSceneActivation = true;
        GameManager.CurLevelId = levelId;
    }
Exemplo n.º 13
0
    public virtual IEnumerator EnterAnim(UIAnimCallBack l_animComplete, UICallBack l_callBack, params object[] objs)
    {
        //默认无动画
        l_animComplete(this, l_callBack, objs);

        yield return(null);
    }
Exemplo n.º 14
0
    /// <summary>
    /// 打开UI
    /// </summary>
    /// <param name="UIName">UI名</param>
    /// <param name="callback">动画播放完毕回调</param>
    /// <param name="objs">回调传参</param>`
    /// <returns>返回打开的UI</returns>
    public static UIWindowBase OpenUIWindow(string UIName, UICallBack callback = null, params object[] objs)
    {
        UIWindowBase UIbase = GetHideUI(UIName);

        if (UIbase == null)
        {
            UIbase = CreateUIWindow(UIName);
        }

        RemoveHideUI(UIbase);
        AddUI(UIbase);

        UIStackManager.OnUIOpen(UIbase);
        UILayerManager.SetLayer(UIbase);      //设置层级

        UIbase.windowStatus = UIWindowBase.WindowStatus.OpenAnim;

        UISystemEvent.Dispatch(UIbase, UIEvent.OnOpen);  //派发OnOpen事件
        try
        {
            UIbase.OnOpen();
        }
        catch (Exception e)
        {
            Debug.LogError(UIName + " OnOpen Exception: " + e.ToString());
        }

        UISystemEvent.Dispatch(UIbase, UIEvent.OnOpened);     //派发OnOpened事件

        UIAnimManager.StartEnterAnim(UIbase, callback, objs); //播放动画
        return(UIbase);
    }
Exemplo n.º 15
0
    public virtual IEnumerator EnterAnim(UIAnimCallBack animComplete, UICallBack callBack, params object[] objs)
    {
        //默认无动画
        animComplete(this, callBack, objs);

        yield break;
    }
Exemplo n.º 16
0
 public virtual IEnumerator StartOpenAnim(UICallBack uiCallBack, params object[] objs)
 {
     if (uiCallBack != null)
     {
         uiCallBack(objs);
     }
     yield break;
 }
Exemplo n.º 17
0
    //UI的退出动画
    public override IEnumerator ExitAnim(UIAnimCallBack l_animComplete, UICallBack l_callBack, params object[] objs)
    {
        AnimSystem.UguiSizeDelta(GetGameObject("Image"), new Vector2(1000, 100), new Vector2(1000, 000), 0.3f);

        yield return(new WaitForSeconds(0.3f));

        yield return(base.ExitAnim(l_animComplete, l_callBack, objs));
    }
Exemplo n.º 18
0
 /// <summary>
 /// 关闭时的动画效果,
 /// </summary>
 /// <param name="uiCallBack"></param>
 /// <param name="objs"></param>
 /// <returns></returns>
 public override IEnumerator StartCloseAnim(UICallBack uiCallBack, params object[] objs)
 {
     m_CanvasGroup.DOFade(0, 0.5f).OnComplete(() =>
     {
         StartCoroutine(base.StartCloseAnim(uiCallBack, objs));
     });
     yield return(new WaitForEndOfFrame());
 }
Exemplo n.º 19
0
    //UI的进入动画
    public override IEnumerator EnterAnim(UIAnimCallBack l_animComplete, UICallBack l_callBack, params object[] objs)
    {
        AnimSystem.UguiSizeDelta(GetGameObject("Image"), new Vector2(1000, 0), new Vector2(1000, 100), 0.4f, interp: InterpType.OutBack);

        yield return(new WaitForSeconds(2));

        yield return(base.EnterAnim(l_animComplete, l_callBack, objs));
    }
Exemplo n.º 20
0
    static int CloseUIWindow(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (TypeChecker.CheckTypes(L, 1, typeof(string), typeof(bool), typeof(UICallBack)) && TypeChecker.CheckParamsType(L, typeof(object), 4, count - 3))
            {
                string     arg0      = ToLua.ToString(L, 1);
                bool       arg1      = LuaDLL.lua_toboolean(L, 2);
                UICallBack arg2      = null;
                LuaTypes   funcType3 = LuaDLL.lua_type(L, 3);

                if (funcType3 != LuaTypes.LUA_TFUNCTION)
                {
                    arg2 = (UICallBack)ToLua.ToObject(L, 3);
                }
                else
                {
                    LuaFunction func = ToLua.ToLuaFunction(L, 3);
                    arg2 = DelegateFactory.CreateDelegate(typeof(UICallBack), func) as UICallBack;
                }

                object[] arg3 = ToLua.ToParamsObject(L, 4, count - 3);
                UIManager.CloseUIWindow(arg0, arg1, arg2, arg3);
                return(0);
            }
            else if (TypeChecker.CheckTypes(L, 1, typeof(UIWindowBase), typeof(bool), typeof(UICallBack)) && TypeChecker.CheckParamsType(L, typeof(object), 4, count - 3))
            {
                UIWindowBase arg0      = (UIWindowBase)ToLua.ToObject(L, 1);
                bool         arg1      = LuaDLL.lua_toboolean(L, 2);
                UICallBack   arg2      = null;
                LuaTypes     funcType3 = LuaDLL.lua_type(L, 3);

                if (funcType3 != LuaTypes.LUA_TFUNCTION)
                {
                    arg2 = (UICallBack)ToLua.ToObject(L, 3);
                }
                else
                {
                    LuaFunction func = ToLua.ToLuaFunction(L, 3);
                    arg2 = DelegateFactory.CreateDelegate(typeof(UICallBack), func) as UICallBack;
                }

                object[] arg3 = ToLua.ToParamsObject(L, 4, count - 3);
                UIManager.CloseUIWindow(arg0, arg1, arg2, arg3);
                return(0);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: UIManager.CloseUIWindow"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Exemplo n.º 21
0
    //UI的退出动画
    public override IEnumerator ExitAnim(UIAnimCallBack l_animComplete, UICallBack l_callBack, params object[] objs)
    {
        //AnimSystem.uguiAlpha(gameObject, 1, 0, 1, InteType.Linear, true, (object[] obj) =>
        //{
        //    l_animComplete(this, l_callBack, objs);
        //});

        yield return(new WaitForEndOfFrame());
    }
Exemplo n.º 22
0
    //UI的退出动画
    public override IEnumerator ExitAnim(UIAnimCallBack l_animComplete, UICallBack l_callBack, params object[] objs)
    {
        AnimSystem.UguiAlpha(gameObject, 1, 0, 1, callBack: (object[] obj) =>
        {
            base.ExitAnim(l_animComplete, l_callBack, objs);
        });

        yield break;
    }
    //UI的进入动画
    public override IEnumerator EnterAnim(UIAnimCallBack l_animComplete, UICallBack l_callBack, params object[] objs)
    {
        AnimSystem.UguiAlpha(gameObject, 0, 1, 1, interp: InterpType.Linear, isChild: true, callBack: (object[] obj) =>
        {
            l_animComplete(this, l_callBack, objs);
        });

        yield return(new WaitForSeconds(5));
    }
Exemplo n.º 24
0
    //UI的退出动画
    public override IEnumerator ExitAnim(UIAnimCallBack l_animComplete, UICallBack l_callBack, params object[] objs)
    {
        AnimSystem.UguiAlpha(gameObject, 1, 0, 1, InterpType.Linear, true, (object[] obj) =>
        {
            base.ExitAnim(l_animComplete, l_callBack, objs);
        });

        return(null);
    }
Exemplo n.º 25
0
    //UI的退出动画
    public override IEnumerator ExitAnim(UIAnimCallBack l_animComplete, UICallBack l_callBack, params object[] objs)
    {
        AnimSystem.UguiAlpha(gameObject, 1, 0, 1, callBack: (object[] obj) =>
        {
            base.ExitAnim(l_animComplete, l_callBack, objs);
        });

        yield break;
    }
Exemplo n.º 26
0
    //UI的进入动画
    public override IEnumerator EnterAnim(UIAnimCallBack l_animComplete, UICallBack l_callBack, params object[] objs)
    {
        AnimSystem.UguiAlpha(gameObject, 0, 1, 1, callBack: (object[] obj) =>
        {
            base.EnterAnim(l_animComplete, l_callBack, objs);
        });

        return(null);
    }
    //UI的退出动画
    public override IEnumerator ExitAnim(UIAnimCallBack l_animComplete, UICallBack l_callBack, params object[] objs)
    {
        AnimSystem.UguiAlpha(gameObject, null, 0, callBack: (object[] obj) =>
        {
            StartCoroutine(base.ExitAnim(l_animComplete, l_callBack, objs));
        });

        yield return(new WaitForEndOfFrame());
    }
Exemplo n.º 28
0
    void Start()
    {
        gameObject.SetActive(false);
        gameObject.GetComponent <Canvas>().sortingOrder = 1;
        UICallBack uiCallBack = new UICallBack();

        uiCallBack.GameObject = gameObject;
        MainManager.Instance.UiMananger.Dictionary.Add(i, uiCallBack);
        close.onClick.AddListener(closeCallback);
    }
Exemplo n.º 29
0
 public static void RemoveAllUIEvent(UIEvent UIEvent, UICallBack l_CallBack)
 {
     if (s_allUIEvents.ContainsKey(UIEvent))
     {
         s_allUIEvents[UIEvent] -= l_CallBack;
     }
     else
     {
         Debug.LogError("RemoveAllUIEvent don't exits: " + UIEvent);
     }
 }
Exemplo n.º 30
0
 /// <summary>
 /// 每个UI都会派发的事件
 /// </summary>
 /// <param name="Event">事件类型</param>
 /// <param name="callback">回调函数</param>
 public static void RegisterAllUIEvent(UIEvent UIEvent, UICallBack CallBack)
 {
     if (s_allUIEvents.ContainsKey(UIEvent))
     {
         s_allUIEvents[UIEvent] += CallBack;
     }
     else
     {
         s_allUIEvents.Add(UIEvent, CallBack);
     }
 }
Exemplo n.º 31
0
 /// <summary>
 /// 打开时的动画效果
 /// </summary>
 /// <param name="uiCallBack"></param>
 /// <param name="objs"></param>
 /// <returns></returns>
 public override IEnumerator StartOpenAnim(UICallBack uiCallBack, params object[] objs)
 {
     m_CanvasGroup.alpha          = 0;
     m_CanvasGroup.blocksRaycasts = false;
     uiCallBack += (args) => { m_CanvasGroup.blocksRaycasts = true; };
     m_CanvasGroup.DOFade(1, 0.4f).OnComplete(() =>
     {
         StartCoroutine(base.StartOpenAnim(uiCallBack, objs));
     });
     yield return(new WaitForEndOfFrame());
 }
Exemplo n.º 32
0
 /// <summary>
 /// 每个UI都会派发的事件
 /// </summary>
 /// <param name="Event">事件类型</param>
 /// <param name="callback">回调函数</param>
 public static void RegisterAllUIEvent(UIEvent l_UIEvent, UICallBack l_CallBack)
 {
     if (s_allUIEvents.ContainsKey(l_UIEvent))
     {
         s_allUIEvents[l_UIEvent] += l_CallBack;
     }
     else
     {
         s_allUIEvents.Add(l_UIEvent,l_CallBack);
     }
 }
Exemplo n.º 33
0
 /// <summary>
 /// 注册单个UI派发的事件
 /// </summary>
 /// <param name="Event">事件类型</param>
 /// <param name="callback"回调函数></param>
 public static void RegisterEvent(string l_UIName,UIEvent l_UIEvent, UICallBack l_CallBack)
 {
     if (s_singleUIEvents.ContainsKey(l_UIName))
     {
         if (s_singleUIEvents[l_UIName].ContainsKey(l_UIEvent))
         {
             s_singleUIEvents[l_UIName][l_UIEvent] += l_CallBack;
         }
         else
         {
             s_singleUIEvents[l_UIName].Add(l_UIEvent,l_CallBack);
         }
     }
     else
     {
         s_singleUIEvents.Add(l_UIName,new Dictionary<UIEvent,UICallBack>());
         s_singleUIEvents[l_UIName].Add(l_UIEvent, l_CallBack);
     }
 }
Exemplo n.º 34
0
 //UI的进入动画
 public override IEnumerator EnterAnim(UIAnimCallBack l_animComplete, UICallBack l_callBack, params object[] objs)
 {
     return base.EnterAnim(l_animComplete, l_callBack, objs);
 }