Game Framework Easy Starter是一个适合新手、基于Game Framework的游戏开发模板。
Game Framework 是一个基于 Unity 5.3+ 引擎的游戏框架,主要对游戏开发过程中常用模块进行了封装,很大程度地规范开发过程、加快开发速度并保证产品质量。
本模板根据GF官方demo—EllanJiang / StarForce精简得到,移除了大量封装和功能(包括配置文件、网络部分等等),并做了大量修改,补充注释使得更适合新人上手。
原版地址:https://github.com/EllanJiang/GameFramework
在使用本模板前,希望你能够阅读笨木头的系列教程:
GameFramework]Demo1-如何创建一个GameFramework项目
GameFramework]Demo2-切换流程和场景
GameFramework]Demo3-加载UI
GameFramework]Demo4-内置事件订阅
GameFramework]Demo5-加载配置文件
GameFramework]Demo6-创建实体
GameFramework]Demo7-发起Web请求
GameFramework]Demo8-NetWork网络连接、发送、接收数据
GameFramework]Demo9-AssetBundle打包的一些坑
GameFramework]Demo10-有限状态机的使用
using System;
using GameFramework;
using GameFramework.DataTable;
using GameFramework.Event;
using GameFramework.Procedure;
using UnityEngine;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
///
/// 启动流程类
///
public class ProcedureLaunch : ProcedureBase
{
// 游戏初始化时执行。
protected override void OnInit(ProcedureOwner procedureOwner)
{
base.OnInit(procedureOwner);
}
// 每次进入这个流程时执行。
protected override void OnEnter(ProcedureOwner procedureOwner)
{
base.OnEnter(procedureOwner);
}
// 每次轮询执行。
protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
{
base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);
}
// 每次离开这个流程时执行。
protected override void OnLeave(ProcedureOwner procedureOwner, bool isShutdown)
{
base.OnLeave(procedureOwner, isShutdown);
}
// 游戏退出时执行。
protected override void OnDestroy(ProcedureOwner procedureOwner)
{
base.OnDestroy(procedureOwner);
}
}
SceneComponent scene = GameEntry.GetComponent<SceneComponent>();
scene.LoadScene("Assets/GameMain/Scenes/MainMenu.unity", this);
UIComponent UI_LoadingObject = GameEntry.GetComponent<UIComponent>();
UI_LoadingObject.OpenUIForm("Assets/GameMain/UI/Prefabs/UI_MainMenu.prefab", "Menu", 1, this);
// 启用事件组件
EventComponent eventComponent = GameEntry.GetComponent<EventComponent>();
// 启用OpenUIFormSuccess和OnLoadSceneSucess
eventComponent.Subscribe(OpenUIFormSuccessEventArgs.EventId, OnOpenUIFormSuccess);
eventComponent.Subscribe(LoadSceneSuccessEventArgs.EventId, OnLoadSceneSucess);
private void OnLoadSceneSucess(object sender, GameEventArgs e)
{
// 启用事件组件并订阅相应事件后,每次达到条件都会执行一次相应事件回调函数
Debug.Log("成功加载了一个场景");
}
using GameFramework;
using UnityEngine;
using UnityGameFramework.Runtime;
///
/// loading界面逻辑类
///
public class LoadingFormLogic : UIFormLogic
{
private ProcedureChangeScene m_ProcedureChangeScene;
protected LoadingFormLogic() { }
protected override void OnOpen(object userData)
{
base.OnOpen(userData);
// 打开UI的时候我们把ProcedureChangeScene作为参数传递了进去,在这里OnOpen事件会把它传递过来
m_ProcedureChangeScene = (ProcedureChangeScene)userData;
if (m_ProcedureChangeScene == null)
{
return;
}
}
}