示例#1
0
        private void InitWindow(UILoadState uiState, UIController uiBase, bool open, params object[] args)
        {
            uiBase.OnInit();
            if (OnInitEvent != null)
            {
                OnInitEvent(uiBase);
            }
            if (open)
            {
                OnOpen(uiState, args);
            }

            if (!open)
            {
                if (!uiState.IsStaticUI)
                {
                    CloseWindow(uiBase.UIName); // Destroy
                    return;
                }
                else
                {
                    uiBase.gameObject.SetActive(false);
                }
            }

            uiState.OnUIWindowLoadedCallbacks(uiState, uiBase);
        }
示例#2
0
        private void InitWindow(UILoadState uiState, UIController uiBase, bool open, params object[] args)
        {
            System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
            stopwatch.Start();
            uiBase.OnInit();
            stopwatch.Stop();
            Log.Debug("OnInit UI {0}, cost {1}", uiBase.name, stopwatch.Elapsed.TotalMilliseconds * 0.001f);
            if (OnInitEvent != null)
            {
                OnInitEvent(uiBase);
            }
            if (open)
            {
                OnOpen(uiState, args);
            }

            if (!open)
            {
                if (!uiState.IsStaticUI)
                {
                    CloseWindow(uiBase.UIName); // Destroy
                    return;
                }
                else
                {
                    uiBase.gameObject.SetActive(false);
                }
            }

            uiState.OnUIWindowLoadedCallbacks(uiState, uiBase);
        }
示例#3
0
        private void InitWindow(UILoadState uiState, UIController uiBase, bool open, params object[] args)
        {
            if (AppConfig.IsLogFuncCost || AppConfig.IsSaveCostToFile)
            {
                KProfiler.BeginWatch("UI.Init");
            }
            uiBase.OnInit();
            KWatchResult profilerData = null;

            if (AppConfig.IsLogFuncCost)
            {
                profilerData = KProfiler.EndWatch("UI.Init", string.Concat(uiState.InstanceName, ".OnInit"));
            }
            if (AppConfig.IsSaveCostToFile)
            {
                if (profilerData == null)
                {
                    profilerData = KProfiler.EndWatch("UI.Init", string.Concat(uiState.InstanceName, ".OnInit"));
                }
                LogFileRecorder.WriteUILog(uiState.InstanceName, LogFileRecorder.UIState.OnInit, profilerData.costTime);
            }
            if (OnInitEvent != null)
            {
                OnInitEvent(uiBase);
            }
            if (open)
            {
                OnOpen(uiState, args);
            }

            if (!open)
            {
                if (!uiState.IsStaticUI)
                {
                    CloseWindow(uiBase.UIName); // Destroy
                    return;
                }
                else
                {
                    if (uiBase.Canvas != null)
                    {
                        uiBase.Canvas.enabled = false;
                    }
                    else
                    {
                        uiBase.gameObject.SetActiveX(false);
                    }
                }
            }

            uiState.OnUIWindowLoadedCallbacks(uiState, uiBase);
        }
示例#4
0
        private IEnumerator PreLoadUIAssetBundle(string windowTemplateName, UILoadState uiState)
        {
            if (uiState.UIResourceLoader != null)
            {
                uiState.UIResourceLoader.Release(true);// now!
                if (AppConfig.IsLogAbInfo)
                {
                    Log.Info("Release UI ResourceLoader: {0}", uiState.UIResourceLoader.Url);
                }
                uiState.UIResourceLoader = null;
            }

            var request = new UILoadRequest();

            yield return(KResourceModule.Instance.StartCoroutine(UiBridge.LoadUIAsset(uiState, request)));

            GameObject uiObj = (GameObject)request.Asset;

            if (uiObj != null)
            {
                InitUIAsset(uiObj);

                uiObj.transform.localRotation = Quaternion.identity;
                uiObj.transform.localScale    = Vector3.one;
                // 具体加载逻辑结束...这段应该放到Bridge里

                var canvas = uiObj.GetComponent <Canvas>();
                if (canvas)
                {
                    canvas.enabled = false;
                }
                else
                {
                    uiObj.SetActiveX(false);
                }
                uiObj.name = uiState.TemplateName;

                var uiBase = UiBridge.CreateUIController(uiObj, uiState.TemplateName);
                if (uiState.UIWindow != null)
                {
                    Log.Info("Destroy exist UI Window, maybe for reload");
                    GameObject.Destroy(uiState.UIWindow.CachedGameObject);
                    uiState.UIWindow = null;
                }

                uiState.UIWindow    = uiBase;
                uiState.WindowAsset = uiObj.GetComponent <UIWindowAsset>();
                uiBase.UIName       = uiBase.UITemplateName = uiState.TemplateName;

                UiBridge.UIObjectFilter(uiBase, uiObj);

                uiState.IsLoading = false; // Load完

                uiState.OnUIWindowLoadedCallbacks(uiState, uiBase);

                if (uiState.OpenWhenFinish)
                {
                    InitWindow(uiState, uiBase, true, uiState.OpenArgs);
                }
                else
                {
                    if (OnInitEvent != null)
                    {
                        OnInitEvent(uiBase);
                    }
                }
            }

            LoadingUICount--;
        }
示例#5
0
        private IEnumerator PreLoadUIAssetBundle(string windowTemplateName, UILoadState uiState)
        {
            if (uiState.UIResourceLoader != null)
            {
                uiState.UIResourceLoader.Release(true);// now!
                Log.Info("Release UI ResourceLoader: {0}", uiState.UIResourceLoader.Url);
                uiState.UIResourceLoader = null;
            }

            var request = new UILoadRequest();

            yield return(KResourceModule.Instance.StartCoroutine(UiBridge.LoadUIAsset(uiState, request)));

            GameObject uiObj  = (GameObject)request.Asset;
            GameObject uiRoot = GameObject.Find("UIRoot");

            if (uiRoot == null)
            {
                uiRoot = new GameObject("UIRoot");
                if (!SceneLoader.isLoadSceneAdditive)
                {
                    GameObject.DontDestroyOnLoad(uiRoot);
                }
            }
            if (uiObj != null)
            {
                uiObj.transform.SetParent(uiRoot.transform);
                uiObj.transform.localRotation = Quaternion.identity;
                uiObj.transform.localScale    = Vector3.one;
                // 具体加载逻辑结束...这段应该放到Bridge里

                uiObj.SetActive(false);
                uiObj.name = uiState.TemplateName;

                var uiBase = UiBridge.CreateUIController(uiObj, uiState.TemplateName);

                if (uiState.UIWindow != null)
                {
                    Log.Info("Destroy exist UI Window, maybe for reload");
                    GameObject.Destroy(uiState.UIWindow.CachedGameObject);
                    uiState.UIWindow = null;
                }

                uiState.UIWindow = uiBase;

                uiBase.UIName = uiBase.UITemplateName = uiState.TemplateName;

                UiBridge.UIObjectFilter(uiBase, uiObj);

                uiState.IsLoading = false; // Load完

                uiBase.gameObject.SetActive(false);
                uiState.OnUIWindowLoadedCallbacks(uiState, uiBase);

                if (uiState.OpenWhenFinish)
                {
                    InitWindow(uiState, uiBase, true, uiState.OpenArgs);
                }
                else
                {
                    if (OnInitEvent != null)
                    {
                        OnInitEvent(uiBase);
                    }
                }
            }

            LoadingUICount--;
        }