/// <summary>
        /// 异步加载场景
        /// </summary>
        public ETTask <SceneAssetRequest> LoadSceneAsync(SceneAssetRequest sceneAssetRequest)
        {
            ETTaskCompletionSource <SceneAssetRequest> tcs = new ETTaskCompletionSource <SceneAssetRequest>();

            sceneAssetRequest.completed = (arq) => { tcs.SetResult(sceneAssetRequest); };
            return(tcs.Task);
        }
Esempio n. 2
0
    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);
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
    private IEnumerator LoadSceneAsync(string sceneName)
    {
        yield return(null);

        string scenePath = ABPathUtilities.GetScenePath(sceneName);

        loadingAsyncOperation = Assets.LoadSceneAsync(scenePath, false);

        while (!loadingAsyncOperation.isDone)
        {
            yield return(null);
        }
    }
Esempio n. 6
0
    //异步加载场景
    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;
            }
        };
    }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
 public static void UnloadScene(SceneAssetRequest scene)
 {
     scene.Release();
 }
Esempio n. 9
0
 //同步加载场景
 public async void LoadScene(string sceneName)
 {
     string            scenePath         = ABPathUtilities.GetScenePath(sceneName);
     SceneAssetRequest sceneAssetRequest = await SceneAsync(scenePath);
 }