Exemple #1
0
    /// <summary>
    /// 加载场景
    /// </summary>
    /// <param name="tag"></param>
    public void LoadScene(GameResources.SceneName tag)
    {
        //如果当前场景名称和要加载的场景名称一致,则直接返回
        if (GameData.Instance.GameLevelName == GameData.Instance.SceneName[tag])
        {
            return;
        }
        //要加载的资源
        List <LoadResourcesModel> rModel = new List <global::LoadResourcesModel>();

        //加载完成后的回调
        LoadManager.CallBack call = null;
        switch (tag)
        {
        case GameResources.SceneName.LOGIN:
        {
            LoadResourcesModel rM = new global::LoadResourcesModel();
            rM.type = GameResources.ResourceType.PREFAB;
            rM.path = GameResources.UIResourcesPath + GameData.Instance.CanvasName[GameResources.CanvasTag.CANVASLOGIN];
            rModel.Add(rM);
            call = delegate()
            {
                //场景是空白场景,UI或其他资源在场景加载后进行实例化生成,添加到本场景
                GameObject go = GameApp.Instance.ResourcesManagerScript.LoadInstantiateGameObject(rM.path, null, Vector3.zero);
                //UI和代码同样也是分离的,方便代码热更新
                go.AddComponent <UI_Login>();
            };
        }
        break;

        case GameResources.SceneName.LOGO:
        {
            LoadResourcesModel rM = new global::LoadResourcesModel();
            rM.type = GameResources.ResourceType.PREFAB;
            rM.path = GameResources.UIResourcesPath + GameData.Instance.CanvasName[GameResources.CanvasTag.CANVASLOGO];
            rModel.Add(rM);
            call = delegate()
            {
                //场景是空白场景,UI或其他资源在场景加载后进行实例化生成,添加到本场景
                GameObject go = GameApp.Instance.ResourcesManagerScript.LoadInstantiateGameObject(rM.path, null, Vector3.zero);
                //UI和代码同样也是分离的,方便代码热更新
                go.AddComponent <UI_logo>();
            };
        }
        break;

        case GameResources.SceneName.MAIN:
        {
            LoadResourcesModel rM = new LoadResourcesModel();
            rM.type = GameResources.ResourceType.PREFAB;
            rM.path = GameResources.UIResourcesPath + GameData.Instance.CanvasName[GameResources.CanvasTag.CANVASMAIN];
            rModel.Add(rM);
            call = delegate()
            {
                //场景是空白场景,UI或其他资源在场景加载后进行实例化生成,添加到本场景
                GameObject go = GameApp.Instance.ResourcesManagerScript.LoadInstantiateGameObject(rM.path, null, Vector3.zero);
                //UI和代码同样也是分离的,方便代码热更新
                go.AddComponent <UI_main>();
            };
        }
        break;

        case GameResources.SceneName.BATTLE:
        {
            LoadResourcesModel rM = new LoadResourcesModel();
            rM.type = GameResources.ResourceType.PREFAB;
            rM.path = GameResources.UIResourcesPath + GameData.Instance.CanvasName[GameResources.CanvasTag.CANVASBATTLE];
            rModel.Add(rM);

            LoadResourcesModel rM1 = new LoadResourcesModel();
            rM1.type = GameResources.ResourceType.PREFAB;
            rM1.path = GameResources.UIResourcesPath + GameData.Instance.SystemUI[GameResources.SystemUIType.CARDOTHER_TP];
            rModel.Add(rM1);

            LoadResourcesModel rM2 = new LoadResourcesModel();
            rM2.type = GameResources.ResourceType.PREFAB;
            rM2.path = GameResources.UIResourcesPath + GameData.Instance.SystemUI[GameResources.SystemUIType.UIFIGHT_TP];
            rModel.Add(rM2);

            call = delegate()
            {
                //场景是空白场景,UI或其他资源在场景加载后进行实例化生成,添加到本场景
                GameObject go = GameApp.Instance.ResourcesManagerScript.LoadInstantiateGameObject(rM.path, null, Vector3.zero);
                //UI和代码同样也是分离的,方便代码热更新
                go.AddComponent <GameOther>();
            };
        }
        break;
        }
        //开始加载场景
        GameApp.Instance.LoadManagerScript.StartLoadScene(tag, rModel, call);
    }
Exemple #2
0
 /// <summary>
 /// 关闭系统UI
 /// </summary>
 /// <param name="type"></param>
 public void CloseSystemUI(GameResources.SystemUIType type = GameResources.SystemUIType.NULL, LoadManager.CallBack call = null)
 {
     //如果当前没有页面显示,则直接返回
     if (SystemList.Count <= 0)
     {
         return;
     }
     //如果直接关闭当前最前一层ui
     if (type == GameResources.SystemUIType.NULL)
     {
         GameObject go;
         if (!SystemUICache.TryGetValue(SystemList[SystemList.Count - 1], out go))
         {
             return;
         }
         go.SetActive(false);
         SystemList.RemoveAt(SystemList.Count - 1);
     }
     else
     {
         //关闭指定的UI界面
         GameObject go;
         if (!SystemUICache.TryGetValue(type, out go))
         {
             return;
         }
         go.SetActive(false);
         //将UI界面从队列中剔除
         for (int i = 0; i < SystemList.Count; i++)
         {
             if (SystemList [i] == type)
             {
                 SystemList.RemoveAt(i);
                 break;
             }
         }
     }
     if (call != null)
     {
         call();
     }
 }