/// <summary> /// 异步加载场景 /// </summary> public ETTask <SceneAssetRequest> LoadSceneAsync(SceneAssetRequest sceneAssetRequest) { ETTaskCompletionSource <SceneAssetRequest> tcs = new ETTaskCompletionSource <SceneAssetRequest>(); sceneAssetRequest.completed = (arq) => { tcs.SetResult(sceneAssetRequest); }; return(tcs.Task); }
public static SceneAssetRequest LoadSceneAsync(string path, bool additive, LoadedCallback loadedCallback = null) { if (string.IsNullOrEmpty(path)) { GameLog.LogError("invalid path"); return(null); } path = GetExistPath(path); var asset = new SceneAssetRequestAsync(path, additive); if (!additive) { if (_runningScene != null) { _runningScene.Release();; _runningScene = null; } _runningScene = asset; } if (loadedCallback != null) { asset.completed += loadedCallback; } asset.Load(); asset.Retain(); _scenes.Add(asset); GameLog.Log(string.Format("LoadScene:{0}", path)); return(asset); }
/// <summary> /// 加载场景,path需要是全路径 /// </summary> /// <param name="path"></param> /// <returns></returns> public ETTask <SceneAssetRequest> LoadSceneAsync(string path) { ETTaskCompletionSource <SceneAssetRequest> tcs = new ETTaskCompletionSource <SceneAssetRequest>(); SceneAssetRequest sceneAssetRequest = Assets.LoadSceneAsync(path, false); sceneAssetRequest.completed = (arq) => { tcs.SetResult(arq as SceneAssetRequest); }; return(tcs.Task); }
/// <summary> /// 加载场景,path需要是全路径 /// </summary> /// <param name="path"></param> /// <returns></returns> public static ETTask <SceneAssetRequest> LoadSceneAsync(string path) { ETTask <SceneAssetRequest> tcs = ETTask <SceneAssetRequest> .Create(true); SceneAssetRequest sceneAssetRequest = Assets.LoadSceneAsync(path, false); sceneAssetRequest.completed += (arq) => { tcs.SetResult(sceneAssetRequest); }; return(tcs); }
private IEnumerator LoadSceneAsync(string sceneName) { yield return(null); string scenePath = ABPathUtilities.GetScenePath(sceneName); loadingAsyncOperation = Assets.LoadSceneAsync(scenePath, false); while (!loadingAsyncOperation.isDone) { yield return(null); } }
//异步加载场景 public void LoadSceneAsync(string sceneName, Action callback = null) { string scenePath = ABPathUtilities.GetScenePath(sceneName); SceneAssetRequest sceneAssetRequest = Assets.LoadSceneAsync(scenePath, false); sceneAssetRequest.completed += (arq) => { if (callback != null) { callback(); callback = null; } }; }
public static async ETVoid EnterMapAsync() { try { Session hotfixSession = Game.Scene.GetComponent <SessionComponent>().Session; ResourcesAsyncComponent resourcesAsync = ETModel.Game.Scene.GetComponent <ResourcesAsyncComponent>(); PlayerInfoComponent playerInfo = Game.Scene.GetComponent <PlayerInfoComponent>(); if (hotfixSession == null) { Log.Error("获取hotfixSession失败"); } G2C_RequestEnterMap g2CRequestEnterMap = (G2C_RequestEnterMap)await hotfixSession.Call(new C2G_RequestEnterMap() { Account = playerInfo.account }); // 加载场景资源 SceneAssetRequest sceneAssetAsyncRequest = Assets.LoadSceneAsync("Arena.unity3d"); await resourcesAsync.LoadSceneAsync(sceneAssetAsyncRequest); // 切换到map场景 using (SceneChangeComponent sceneChangeComponent = ETModel.Game.Scene.AddComponent <SceneChangeComponent>()) { await sceneChangeComponent.ChangeSceneAsync(SceneType.Arena); } PlayerCube playerCube = await PlayerCubeFactory.Create(new Vector3(g2CRequestEnterMap.PositionX, g2CRequestEnterMap.PositionY, g2CRequestEnterMap.PositionZ)); //获取其它在地图里的玩家 hotfixSession.Send(new C2G_GetOtherPlayer() { Account = playerInfo.account }); //添加网络同步脚本 playerCube.AddComponent <PlayerCubeNetComponent, int>(playerInfo.account); nowPlayerCube = playerCube; Game.EventSystem.Run(EventIdType.EnterMapFinish); } catch (Exception e) { Log.Error(e); } }
public static void UnloadScene(SceneAssetRequest scene) { scene.Release(); }
//同步加载场景 public async void LoadScene(string sceneName) { string scenePath = ABPathUtilities.GetScenePath(sceneName); SceneAssetRequest sceneAssetRequest = await SceneAsync(scenePath); }