GameFramework学习之添加场景

首先Ctrl+N新建一个场景
然后在
GameFramework学习之添加场景_第1张图片
GameFramework学习之添加场景_第2张图片
这两个表中将新的场景信息加进去
注意名字一样别弄错
然后建立流程脚本

在这里插入图片描述
脚本建完之后这里要勾选,不然会报错
GameFramework学习之添加场景_第3张图片
然后在上一个脚本中写加载流程
GameFramework学习之添加场景_第4张图片

新的场景中
的相关脚本

using GameFramework;
using GameFramework.DataTable;
using GameFramework.Event;
using GameFramework.Fsm;
using System;
using GameFramework.Procedure;
using GameFramework.Resource;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;

namespace StarForce
{
    public class ProcedureFight : ProcedureBase
    {
        private const int fightSceneId = 6;
        

        protected override void OnInit(ProcedureOwner procedureOwner)
        {
            base.OnInit(procedureOwner);
        }

        protected override void OnEnter(ProcedureOwner procedureOwner)
        {
            base.OnEnter(procedureOwner);
            //停止所有声音
            GameEntry.Entity.HideAllLoadingEntities();
            GameEntry.Entity.HideAllLoadedEntities();

            //隐藏所有实体
            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();
            //获取上一流程设置的NextSceneId
            int sceneId = procedureOwner.GetData<VarInt>(Constant.ProcedureData.NextSceneId).Value;
            
            //加载实体
            //获取实体组件
            EntityComponent entityComponent
                = UnityGameFramework.Runtime.GameEntry.GetComponent<EntityComponent>();

            //创建实体
            entityComponent.ShowEntity<EntityLogicInFightScene>(1, "Assets/GameMain/Scripts/hennysky/" + NaturePool.ModeName + ".prefab", "EntityTest");
            

            //读表 
            IDataTable<DRScene> dRScenes = GameEntry.DataTable.GetDataTable<DRScene>();
            //获取其中的某一行数据
            DRScene dRScene = dRScenes.GetDataRow(fightSceneId);
            //切换场景
            GameEntry.Scene.LoadScene(AssetUtility.GetSceneAsset(dRScene.AssetName), this);//(某一行数据中的名称,此流程)
            //打开登录UI 参数为(枚举脚本里的LoginForm,此流程)
            GameEntry.UI.OpenUIForm(UIFormId.FightForm, this);

          
        }
        public override bool UseNativeDialog
        {
            get
            {
                return false;
            }
        }
    }
}


GameFramework学习之添加场景_第5张图片
这里的UI可以是替换成你想开启的UI.但加载出来的预制体会带有别的脚本
比如我这里想加载LoginForm的UIForm,但上面会带有LoginForm的脚本

你可能感兴趣的:(笔记)