Beispiel #1
0
        protected internal override void OnInit(ProcedureOwner procedureOwner)
        {
            base.OnInit(procedureOwner);

            //TODO:在这里配置场景ID与切换到对应流程的方法
            m_TargetProcedureChange.Add(1, () => ChangeState <ProcedureHotfixTest>(procedureOwner));
        }
Beispiel #2
0
        protected internal override void OnLeave(ProcedureOwner procedureOwner, bool isShutdown)
        {
            GameEntry.Event.Unsubscribe(LoadSceneSuccessEventArgs.EventId, OnLoadSceneSuccess);
            GameEntry.Event.Unsubscribe(LoadSceneFailureEventArgs.EventId, OnLoadSceneFailure);
            GameEntry.Event.Unsubscribe(LoadSceneUpdateEventArgs.EventId, OnLoadSceneUpdate);
            GameEntry.Event.Unsubscribe(LoadSceneDependencyAssetEventArgs.EventId, OnLoadSceneDependencyAsset);

            base.OnLeave(procedureOwner, isShutdown);
        }
        protected internal override void OnEnter(ProcedureOwner procedureOwner)
        {
            base.OnEnter(procedureOwner);

            Log.Info("进入了热更新入口流程");

            //TODO:在这里切换到游戏的正式开始场景
            procedureOwner.SetData <VarInt>(Trinity.Constant.ProcedureData.NextSceneId, (int)SceneId.LoginScene);
            ChangeState <ProcedureChangeScene>(procedureOwner);
        }
Beispiel #4
0
        protected internal override void OnEnter(ProcedureOwner procedureOwner)
        {
            base.OnEnter(procedureOwner);

            Log.Info("进入了热更新入口流程");

            //TODO:在这里切换到游戏的正式开始场景,场景编号可在DefaultConfig中配置
            procedureOwner.SetData <VarInt>(Trinity.Constant.ProcedureData.NextSceneId, GameEntry.Config.GetInt("Scene.Test"));
            ChangeState <ProcedureChangeScene>(procedureOwner);
        }
Beispiel #5
0
        protected internal override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
        {
            base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);

            if (!m_IsChangeSceneComplete)
            {
                return;
            }

            //根据切换到的场景ID进行对应的流程切换
            m_TargetProcedureChange[m_TargetSceneId]();
        }
Beispiel #6
0
        protected internal override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
        {
            base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);

            if (!m_IsChangeSceneComplete)
            {
                return;
            }

            //根据切换到的目标场景ID进行对应的流程切换
            if (m_TargetProcedureChange.ContainsKey(m_TargetSceneId))
            {
                m_TargetProcedureChange[m_TargetSceneId]?.Invoke();
            }
        }
Beispiel #7
0
        protected internal override void OnEnter(ProcedureOwner procedureOwner)
        {
            base.OnEnter(procedureOwner);

            m_IsChangeSceneComplete = false;

            GameEntry.Event.Subscribe(LoadSceneSuccessEventArgs.EventId, OnLoadSceneSuccess);
            GameEntry.Event.Subscribe(LoadSceneFailureEventArgs.EventId, OnLoadSceneFailure);
            GameEntry.Event.Subscribe(LoadSceneUpdateEventArgs.EventId, OnLoadSceneUpdate);
            GameEntry.Event.Subscribe(LoadSceneDependencyAssetEventArgs.EventId, OnLoadSceneDependencyAsset);

            // 停止所有声音
            GameEntry.Sound.StopAllLoadingSounds();
            GameEntry.Sound.StopAllLoadedSounds();

            // 隐藏所有实体
            GameEntry.Entity.HideAllLoadingEntities();
            GameEntry.Entity.HideAllLoadedEntities();

            // 卸载所有场景
            string[] loadedSceneAssetNames = GameEntry.Scene.GetLoadedSceneAssetNames();
            for (int i = 0; i < loadedSceneAssetNames.Length; i++)
            {
                GameEntry.Scene.UnloadScene(loadedSceneAssetNames[i]);
            }

            // 还原游戏速度
            GameEntry.Base.ResetNormalGameSpeed();

            //读取下一场景ID,根据ID读取场景表中的行数据
            m_TargetSceneId = procedureOwner.GetData <VarInt>(Trinity.Constant.ProcedureData.NextSceneId).Value;
            IDataTable <DRScene> dtScene = GameEntry.DataTable.GetDataTable <DRScene>();
            DRScene drScene = dtScene.GetDataRow(m_TargetSceneId);

            if (drScene == null)
            {
                Log.Warning("Can not load scene '{0}' from data table.", m_TargetSceneId.ToString());
                return;
            }

            //根据行数据里的场景资源名加载场景
            GameEntry.Scene.LoadScene(AssetUtility.GetSceneAsset(drScene.AssetName), Trinity.Constant.AssetPriority.SceneAsset, this);
            m_BackgroundMusicId = drScene.BackgroundMusicId;
        }
Beispiel #8
0
 /// <summary>
 /// 状态销毁时调用。
 /// </summary>
 /// <param name="procedureOwner">流程持有者。</param>
 protected internal override void OnDestroy(ProcedureOwner procedureOwner)
 {
     base.OnDestroy(procedureOwner);
 }
Beispiel #9
0
 /// <summary>
 /// 离开状态时调用。
 /// </summary>
 /// <param name="procedureOwner">流程持有者。</param>
 /// <param name="isShutdown">是否是关闭状态机时触发。</param>
 protected internal override void OnLeave(ProcedureOwner procedureOwner, bool isShutdown)
 {
     base.OnLeave(procedureOwner, isShutdown);
     Log.Info("Leave '{0}' procedure.", GetType().FullName);
 }
Beispiel #10
0
 /// <summary>
 /// 状态轮询时调用。
 /// </summary>
 /// <param name="procedureOwner">流程持有者。</param>
 /// <param name="elapseSeconds">逻辑流逝时间,以秒为单位。</param>
 /// <param name="realElapseSeconds">真实流逝时间,以秒为单位。</param>
 protected internal override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
 {
     base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);
 }
Beispiel #11
0
 /// <summary>
 /// 进入状态时调用。
 /// </summary>
 /// <param name="procedureOwner">流程持有者。</param>
 protected internal override void OnEnter(ProcedureOwner procedureOwner)
 {
     base.OnEnter(procedureOwner);
     Log.Info("Enter '{0}' procedure.", GetType().FullName);
 }
Beispiel #12
0
 /// <summary>
 /// 状态初始化时调用。
 /// </summary>
 /// <param name="procedureOwner">流程持有者。</param>
 protected internal override void OnInit(ProcedureOwner procedureOwner)
 {
     base.OnInit(procedureOwner);
 }