前言:关于去如何去下载安装框架,这里我就不教了,网上太多了
这是下载地址:https://gameframework.cn/download/
1.创建第一个脚本
当我们开始做的时候,创建一个Sence,然后把GameFramework预制体拖进来,如下图
创建一个脚本Demo11_ProcedureLaunch,继承自procedureBase
using GameFramework.Procedure;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
public class Demo11_ProcedureLaunch : ProcedureBase
{
protected override void OnEnter(ProcedureOwner procedureOwner)
{
base.OnEnter(procedureOwner);
Debug.LogError("1111");//在这里可以打印出你想要的东西,例如sayHelloWorld
}
}
把你写的脚本放到流程里
2.然后做切换场景
using GameFramework.Procedure;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
public class Demo11_ProcedureLaunch : ProcedureBase
{
protected override void OnEnter(ProcedureOwner procedureOwner) //你可以理解成Start() 生命周期
{
base.OnEnter(procedureOwner);
Debug.LogError("1111");//在这里可以打印出你想要的东西,例如sayHelloWorld
SceneComponent Scene
= UnityGameFramework.Runtime.GameEntry.GetComponent<SceneComponent>(); //是专门用于处理场景逻辑的框架组件,看下图
// 切换场景
Scene.LoadScene("Assets/Demo11/Demo11_Meun.unity", this);//场景路径
// 切换流程
ChangeState<Demo11_Meun>(procedureOwner);
Debug.LogError("??/");
}
}
这个时候我们需要创建一个新的空场景Demo11_Meun场景,和一个Demo11_Meun脚本,用于跳转
脚本很简单
using GameFramework.Procedure;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
public class Demo11_Meun : ProcedureBase//继承是为了把该脚本写进流程
{
protected override void OnEnter(ProcedureOwner procedureOwner)
{
base.OnEnter(procedureOwner);
}
}
继承ProcedureBase,进入流程后,记得勾选流程
勾上你要显示的菜单脚本
然后打开Build Settings 把场景放进来
运行
场景就加载出来了。
3.场景第二次加载,卸载第一次加载的场景,原场景是不会卸载的
创建Demo11_Game场景,创建Demo11_Game脚本
脚本继续继承,记得勾选流程
using GameFramework.Procedure;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
public class Demo11_Game : ProcedureBase
{
protected override void OnEnter(ProcedureOwner procedureOwner)
{
base.OnEnter(procedureOwner);
Debug.Log("进入游戏流程,可以在这里处理游戏逻辑,这条日志不会打印,因为没有切换到Game流程");
}
}
写个控制脚本Demo11_Controller继承Monobehaviour,创建一个Button,在Demo11_Meun场景
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityGameFramework.Runtime;
public class Demo11_Controller : MonoBehaviour
{
public void NextMethod()
{
// 获取框架场景组件
SceneComponent Scene
= UnityGameFramework.Runtime.GameEntry.GetComponent<SceneComponent>();
// 卸载所有场景
string[] loadedSceneAssetNames = Scene.GetLoadedSceneAssetNames();
for (int i = 0; i < loadedSceneAssetNames.Length; i++)
{
Scene.UnloadScene(loadedSceneAssetNames[i]);
}
// 加载游戏场景
Scene.LoadScene("Assets/Demo11/Demo11_Game.unity", this);
}
}
记得吧Demo11_Game场景放到BuildSettings里面,
运行
点击按钮,进入Game场景,卸载Menu场景,我们初始的第一个场景是不会被卸载的。