GameFramework學習之新增場景
阿新 • • 發佈:2019-01-11
首先Ctrl+N新建一個場景
然後在
這兩個表中將新的場景資訊加進去
注意名字一樣別弄錯
然後建立流程指令碼
指令碼建完之後這裡要勾選,不然會報錯
然後在上一個指令碼中寫載入流程
新的場景中
的相關指令碼
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;
}
}
}
}
這裡的UI可以是替換成你想開啟的UI.但加載出來的預製體會帶有別的指令碼
比如我這裡想載入LoginForm的UIForm,但上面會帶有LoginForm的指令碼