コード例 #1
0
    IEnumerator LoadScene(LoadSceneData data)
    {
        LoadingView loadingView = null;

        ViewManager.Instance.SwitchView(ViewIndex.LoadingView, null, () =>
        {
            loadingView = ViewManager.Instance.currentView as LoadingView;
        });
        yield return(new WaitUntil(() => loadingView != null));

        AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(data.sceneName, LoadSceneMode.Single);

        while (!asyncLoad.isDone)
        {
            loadingView.progress.fillAmount = asyncLoad.progress;
            yield return(null);
        }

        if (data.callBack != null)
        {
            data.callBack("Hi");
        }
        if (ViewManager.Instance.currentView.viewIndex == ViewIndex.LoadingView)
        {
            ViewManager.Instance.SwitchView(ViewIndex.EmptyView);
        }
    }
コード例 #2
0
ファイル: LoadSceneMgr.cs プロジェクト: rouchen/UnityDemo
    /// <summary>
    /// 分析場景資料.
    /// </summary>
    /// <param name="parentNode">xml父節點</param>
    void ParseScenesData(XmlNode parentNode)
    {
        loadSceneDataList.Clear();

        for (int i = 0; i < parentNode.ChildNodes.Count; i++)
        {
            //! 忽略註解.
            if (parentNode.ChildNodes[i].NodeType == XmlNodeType.Comment)
            {
                continue;
            }

            LoadSceneData loadSceneData = new LoadSceneData();

            //! Parent.
            loadSceneData.parentScene        = new ScenePathData();
            loadSceneData.parentScene.name   = parentNode.ChildNodes[i].Attributes["Name"].InnerText;
            loadSceneData.parentScene.idType = parentNode.ChildNodes[i].Attributes["IdType"].InnerText;

            //! Child List.
            loadSceneData.childSceneList = new List <ScenePathData>();
            ParseChildScenesData(parentNode.ChildNodes[i], loadSceneData.childSceneList);

            loadSceneDataList.Add(loadSceneData);
        }
    }
コード例 #3
0
 public override void Show()
 {
     this.loadSceneData      = GameDataManager.Instance.PeekData(DataType.LoadingSceneData) as LoadSceneData;
     transform.localPosition = Vector3.zero;
     this.enabled            = true;
     GetUIRoot(transform);
 }
コード例 #4
0
    void ShowLoadingPanel(object obj)
    {
        if (this == null)
        {
            Destroy();
            return;
        }
        LoadSceneData loadSceneData = obj as LoadSceneData;

        if (loadSceneData == null)
        {
            return;
        }
        switch (loadSceneData.loadSceneType)
        {
        case LoadSceneData.LoadSceneType.Town:
        case LoadSceneData.LoadSceneType.StoryLine:
        case LoadSceneData.LoadSceneType.Battle:
            //TraceUtil.Log("Transform:"+transform);
            if (LoadBattleUI == null)
            {
                LoadBattleUI = UI.CreatObjectToNGUI.InstantiateObj(LoadBattlePanel, null);
            }
            //if (LoadTownUI == null) { LoadTownUI = UI.CreatObjectToNGUI.InstantiateObj(LoadTownPanel, null); }
            //LoadTownUI.Show();
            break;

        default:
            break;
        }
    }
コード例 #5
0
    public void LoadScene(string scene)
    {
        LoadSceneData data = new LoadSceneData(scene);

        if (IsTheHost())
        {
            DiscordNetworkLayerService.INSTANCE.SendMessegeToAllOthers(NetworkChannel.LOADSCENE, data.ToBytes());
        }

        SceneManager.LoadScene(scene);
    }
コード例 #6
0
    // Use this for initialization
    void Start()
    {
        LoadSceneData sceneData = DataManager.Instance.SceneData;

        if (sceneData != null)
        {
            if (sceneData.LastScene == SceneUtils.CurrentScene)
            {
                transform.position = sceneData.LastPetPosition;
            }
        }
    }
コード例 #7
0
    void Start()
    {
        //Move camera to the last saved partition
        LoadSceneData sceneData = DataManager.Instance.SceneData;

        if (sceneData != null)
        {
            if (sceneData.LastScene == SceneUtils.CurrentScene)
            {
                SetCameraToLocalPartition(sceneData.LastCameraPartition);
            }
        }
    }
コード例 #8
0
    /// <summary>
    /// 載入場景
    /// </summary>
    /// <param name="sceneName">場景名稱</param>
    /// <param name="async">是否非同步</param>
    /// <param name="asyncSceneAutoActive">非同步時, 是否自動 Active Scene, 否則手動檢查 IsLoadSceneAsyncApproximatelyDone() 再呼叫 LoadSceneAsyncStartAutoActive() </param>
    public void LoadScene(string sceneName, bool async, bool asyncSceneAutoActive = true)
    {
        LoadSceneData sceneData           = FindSceneData(sceneName);
        string        parentSceneFullName = sceneData.parentScene.path + sceneData.parentScene.name;

        //LoadSceneData emptySceneData = FindSceneData("Empty");
        //string emptySceneFullName = emptySceneData.parentScene.path + emptySceneData.parentScene.name;


        if (async)
        {
            //清空.
            asyncOP.Clear();
            toBeUnloadScene.Clear();
            for (int i = 0; i < SceneManager.sceneCount; i++)
            {
                toBeUnloadScene.Add(SceneManager.GetSceneAt(i));
            }

            //! Parent Scene.

            //SceneManager.LoadSceneAsync(parentSceneFullName);
            //先載一個空埸景(清空之前的), 再把其它的 async load 進來.
            //SceneManager.LoadSceneAsync(emptySceneFullName);
            // single 會 block 其它的 additive.
            //StartCoroutine(LoadSceneAsync(emptySceneFullName, LoadSceneMode.Single));


            //! Child Scene.

            LoadChildScene(sceneData.childSceneList, async, false);


            //parent scene 最後 load 才抓得到 child scene 的東西.
            StartCoroutine(LoadSceneAsync(parentSceneFullName, LoadSceneMode.Additive));

            if (asyncSceneAutoActive)
            {
                LoadSceneAsyncStartAutoActive(0);
            }
        }
        else
        {
            //! Parent Scene.
            SceneManager.LoadScene(parentSceneFullName);
            //! Child Scene.
            LoadChildScene(sceneData.childSceneList, async, false);
        }
    }
コード例 #9
0
    void ShowLoadSceneUI(LoadSceneData.LoadSceneType loadSceneType)
    {
        var loadSceneData = GameDataManager.Instance.PeekData(DataType.LoadingSceneData) as LoadSceneData;

        if (loadSceneData == null)
        {
            loadSceneData = new LoadSceneData(loadSceneType, 0);
        }
        else
        {
            loadSceneData.loadSceneType = loadSceneType;
            loadSceneData.Progress      = 0;
        }
        TraceUtil.Log("ShowLoadingUIPanel:" + loadSceneType);
        //UIEventManager.Instance.TriggerUIEvent(UIEventType.ShowLodingUI, UI.Login.LoginUIType.Loaing);
        GameDataManager.Instance.ResetData(DataType.LoadingSceneData, loadSceneData);
    }
コード例 #10
0
    void Init(object obj)
    {
        GameDataManager.Instance.dataEvent.RemoveEventHandel(DataType.InitializeEctype, Init);
        SMSGEctypeInitialize_SC sMSGEctypeInitialize_SC = (SMSGEctypeInitialize_SC)GameDataManager.Instance.PeekData(DataType.InitializeEctype);

        m_ectypeData    = EctypeConfigManager.Instance.EctypeContainerConfigList[sMSGEctypeInitialize_SC.dwEctypeContainerId];
        ISDefenceEctype = m_ectypeData.lEctypeType == 8;         //防守副本
        if (ISDefenceEctype)
        {
            LoadSceneData loadSceneData = GameDataManager.Instance.PeekData(DataType.LoadingSceneData) as LoadSceneData;
            var           LoadSceneInfo = (SMsgActionNewWorld_SC)loadSceneData.LoadSceneInfo;
            if (m_ectypeData.vectMapID.Split('+')[0] == LoadSceneInfo.dwMapId.ToString())
            {
                StartCoroutine(ShowDefenceEctypeIcon("Sound_UIEff_DefenceUpTips", 1, 3));
            }
        }
    }
コード例 #11
0
        void CheckIsHardScenece()
        {
            LoadSceneData loadSceneData = GameDataManager.Instance.PeekData(DataType.LoadingSceneData) as LoadSceneData;
            var           LoadSceneInfo = (SMsgActionNewWorld_SC)loadSceneData.LoadSceneInfo;
            var           HardSceneList = EctypeConfigManager.Instance.EctypeContainerConfigFile.ectypeContainerDataList.Where(P => P.MapType == 1).ToArray();

            TraceUtil.Log("CurrentMapID:" + LoadSceneInfo.dwMapId);
            if (HardSceneList.Length > 0)
            {
                TraceUtil.Log("HardSceneList.cout:" + HardSceneList.Length);
                var CurrentHardScenece = HardSceneList.SingleOrDefault(P => P.vectMapID.Split('+')[0] == LoadSceneInfo.dwMapId.ToString());
                if (CurrentHardScenece != null)
                {
                    TraceUtil.Log("ShowIcon");
                    StartCoroutine(ShowHardSceneceIcon());
                }
            }
        }
コード例 #12
0
        void OnSceneChange(object obj)
        {
            LoadSceneData m_LoadSceneData = obj as LoadSceneData;

            switch (m_LoadSceneData.loadSceneType)
            {
            case LoadSceneData.LoadSceneType.Login:    //退出游戏时触发
                OnGameExit();
                break;

            case LoadSceneData.LoadSceneType.Battle:
                break;

            case LoadSceneData.LoadSceneType.Town:
                break;

            default:
                break;
            }
        }
コード例 #13
0
ファイル: LoadSceneMgr.cs プロジェクト: rouchen/UnityDemo
    /// <summary>
    /// 取得要Load場景的全部實際資料.
    /// </summary>
    /// <param name="sceneName"></param>
    /// <param name="async"></param>
    /// <param name="asyncSceneAutoActive"></param>
    /// <returns></returns>
    LoadSceneRealData GetLoadSceneRealData(string sceneName, bool async, bool asyncSceneAutoActive)
    {
        LoadSceneRealData sceneRealData = new LoadSceneRealData();

        sceneRealData.async = async;
        sceneRealData.asyncSceneAutoActive = asyncSceneAutoActive;

        LoadSceneData sceneData = FindSceneData(sceneName);

        //! 取得Parent SceneName.
        string parentName = sceneData.parentScene.name;

        //! 如果有idType,就取得遊戲中對應id.
        if (sceneData.parentScene.idType != "")
        {
            int id = GetIdByIdType(sceneData.parentScene.idType);
            parentName += id.ToString();
        }
        sceneRealData.parentSceneName = parentName;

        //! 取得Child SceneName.
        for (int i = 0; i < sceneData.childSceneList.Count; i++)
        {
            ScenePathData childPathData = sceneData.childSceneList[i];

            string childName = childPathData.name;
            //! 如果有idType,就取得遊戲中對應id.
            if (childPathData.idType != "")
            {
                int id = GetIdByIdType(childPathData.idType);
                childName += id.ToString();
            }
            sceneRealData.childSceneNameList.Add(childName);
        }

        return(sceneRealData);
    }
コード例 #14
0
        void Init(object obj)
        {
            GameDataManager.Instance.dataEvent.RemoveEventHandel(DataType.InitializeEctype, Init);
            SMSGEctypeInitialize_SC sMSGEctypeInitialize_SC = (SMSGEctypeInitialize_SC)GameDataManager.Instance.PeekData(DataType.InitializeEctype);
            EctypeContainerData     ectypeData = EctypeConfigManager.Instance.EctypeContainerConfigList[sMSGEctypeInitialize_SC.dwEctypeContainerId];

            ISTrialsEctype = ectypeData.MapType == 5;
            if (ectypeData.MapType != 5)
            {
                ProgressLabel.gameObject.SetActive(false);
                return;
            }
            ProgressLabel.gameObject.SetActive(true);
            ProgressLabel.SetButtonText("1");
            LoadSceneData loadSceneData = GameDataManager.Instance.PeekData(DataType.LoadingSceneData) as LoadSceneData;
            var           LoadSceneInfo = (SMsgActionNewWorld_SC)loadSceneData.LoadSceneInfo;

            //var TrialsSceneList = EctypeConfigManager.Instance.EctypeContainerConfigFile.ectypeContainerDataList.Where(P => P.MapType == 5).ToArray();
            if (ectypeData.vectMapID.Split('+')[0] == LoadSceneInfo.dwMapId.ToString())
            {
                //IsFrstTrialsEctype = true;
                StartCoroutine(ShowTrialsEctypeIcon(2));
            }
        }
コード例 #15
0
 public static void SaveCurrentInfoAsLSD()
 {
     lsd = new LoadSceneData(LevelManager.CurrentSceneName,
                             CurrentColor, AvailableColors, index, player.transform.position);
 }