1. 程式人生 > >GameFrameworkEasyStarter:基於Game Framework的入門遊戲開發模板

GameFrameworkEasyStarter:基於Game Framework的入門遊戲開發模板

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]Demo2-切換流程和場景

GameFramework]Demo3-載入UI

GameFramework]Demo4-內建事件訂閱

GameFramework]Demo5-載入配置檔案

GameFramework]Demo6-建立實體

GameFramework]Demo7-發起Web請求

GameFramework]Demo8-NetWork網路連線、傳送、接收資料

GameFramework]Demo9-AssetBundle打包的一些坑

GameFramework]Demo10-有限狀態機的使用

說明

基礎流程圖

Procedure

示例

流程示例:

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;
        }
    }
}