主要是配合官方
StarForce
项目来学习的
1. 导入unity资源包下载地址:
2. 源码下载地址:
3. 初始场景
- 存在一个初始场景,这个场景放置着
GameFrameWork
预制体,这个场景将一直不会被销毁(图中Builtin
其实就是GameFrameWork
预制体,只是将名字改了一下) - 初始场景也是作为入口
GameFrameWork
预制体下有很多个模块,其中Procedure
用来激活流程和设置初始流程
4. 流程
- 流程类继承自
ProcedureBase
,如下
public class ProcedureMain : ProcedureBase
{
}
- 切换状态就是切换流程
- 切换状态一般放在OnUpdate()函数内
- ChangeState<流程>(procedureOwner);
protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
{
base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);
//ProcedureChangeScene:改变场景的流程类
ChangeState<ProcedureChangeScene>(procedureOwner);
}
5. 状态生命周期函数
函数 | 调用顺序 |
---|---|
OnInit() | 状态初始化 |
OnEnter() | 进入状态调用 |
OnUpdate() | 状态轮询调用 |
OnLeave() | 离开状态调用 |
OnDestory() | 销毁状态调用 |
6. 实体Entity
例如:
①制作一个预制体Cube,无需放入场景中
②添加实体组Entity Group
③编写该实体的逻辑脚本,继承自EntityLogic
using UnityGameFramework.Runtime;
public class Entity_Cube:EntityLogic
{
protected override void OnShow(object userData)
{
base.OnShow(userData);
Log.Debug("Entity_Cube");
}
}
④在某个流程的OnEnter()中,写入下方代码
protected override void OnEnter(ProcedureOwner procedureOwner)
{
base.OnEnter(procedureOwner);
EntityComponent entityComponent = UnityGameFramework.Runtime.GameEntry.GetComponent