GameFrameworkEasyStarter:基於Game Framework的入門遊戲開發模板
阿新 • • 發佈:2018-12-15
GameFrameworkEasyStarter
概述
Game Framework Easy Starter是一個適合新手、基於Game Framework的遊戲開發模板。
Game Framework 是一個基於 Unity 5.3+ 引擎的遊戲框架,主要對遊戲開發過程中常用模組進行了封裝,很大程度地規範開發過程、加快開發速度並保證產品質量。
本模板根據GF官方demo—EllanJiang / StarForce精簡得到,移除了大量封裝和功能(包括配置檔案、網路部分等等),並做了大量修改,補充註釋使得更適合新人上手。
原版地址:https://github.com/EllanJiang/GameFramework
入門
在使用本模板前,希望你能夠閱讀笨木頭的系列教程:
GameFramework]Demo1-如何建立一個GameFramework專案
GameFramework]Demo8-NetWork網路連線、傳送、接收資料
GameFramework]Demo9-AssetBundle打包的一些坑
說明
基礎流程圖
示例
流程示例:
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>;
/// <summary>
/// 啟動流程類
/// </summary>
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);
載入UI:
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("成功載入了一個場景");
}
UI邏輯示例:
using GameFramework;
using UnityEngine;
using UnityGameFramework.Runtime;
/// <summary>
/// loading介面邏輯類
/// </summary>
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;
}
}
}