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); } }
/// <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); } }
public override void Show() { this.loadSceneData = GameDataManager.Instance.PeekData(DataType.LoadingSceneData) as LoadSceneData; transform.localPosition = Vector3.zero; this.enabled = true; GetUIRoot(transform); }
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; } }
public void LoadScene(string scene) { LoadSceneData data = new LoadSceneData(scene); if (IsTheHost()) { DiscordNetworkLayerService.INSTANCE.SendMessegeToAllOthers(NetworkChannel.LOADSCENE, data.ToBytes()); } SceneManager.LoadScene(scene); }
// Use this for initialization void Start() { LoadSceneData sceneData = DataManager.Instance.SceneData; if (sceneData != null) { if (sceneData.LastScene == SceneUtils.CurrentScene) { transform.position = sceneData.LastPetPosition; } } }
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); } } }
/// <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); } }
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); }
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)); } } }
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()); } } }
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; } }
/// <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); }
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)); } }
public static void SaveCurrentInfoAsLSD() { lsd = new LoadSceneData(LevelManager.CurrentSceneName, CurrentColor, AvailableColors, index, player.transform.position); }