Gamefarmework切换场景和状态

 

 

1. 加载场景后就会执行的事件LoadSceneSuccessEventArgs.EventId

由框架内部执行,每次加载完新的场景都会执行这个事件,作用:在加载场景是可以根据场景是否加载完成然后执行想要执行的内容,比如获取组件等

            GameEntry.Event.Subscribe(LoadSceneSuccessEventArgs.EventId, OnLoadSceneSuccess);

2. ProcedureChageScene两种方式,一种是把这个当成中间过渡场景加载等等。

修改ProcedureChageScene 代码,和传入下一个状态参数。

由于感觉挺麻烦的就用下边的方法,反正代码也不多。直接重ProcedureChageScene复制过来就行了

 

    第二种也可以自己写改变场景,不经过ProcedureChageScene;个人比较喜欢这样写。

    这样使用:ProcedureLoad 跳转到指定状态后加载场景,比如跳转ProcedureXXXScene 状态 后清理场景并后再加载场景。

      string[] loadedSceneAssetNames = GameEntry.Scene.GetLoadedSceneAssetNames();
            for (int i = 0; i < loadedSceneAssetNames.Length; i++)
            {
                GameEntry.Scene.UnloadScene(loadedSceneAssetNames[i]);
            }
            //加载场景
            m_NextSceneID = procedureOwner.GetData<VarInt>(Constant.ProcedureData.NextSceneId).Value;                           //得到场景的id
            IDataTable<DRScene> dtScene = GameEntry.DataTable.GetDataTable<DRScene>();
            DRScene drScene = dtScene.GetDataRow(m_NextSceneID);
            if (drScene == null)
            {
                Log.Warning("Can not load scene '{0}' from data table.", m_NextSceneID.ToString());
                return;
            }
            GameEntry.Scene.LoadScene(AssetUtility.GetSceneAsset(drScene.AssetName), Constant.AssetPriority.SceneAsset, this);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值