title: Game Framework學習筆記(3):初識UI

脫離Game Framework加載一個簡單的UI想必大家都應該瞭解,那麼如何在Game Framework框架下使用呢?

Game Framework加載UI的方式,說白了就是使用UI Component統一加載、管理UI的Prefab,避免大量UI分散在場景中,管理困難的情況。

我們先建立一個UI預設體。

打開我們之前的項目,隨便先新建一個UI。我這邊將UI改名爲HelloWorld。它只是在屏幕上打印出Hello,World!,沒有做其他的事。

在這裏插入圖片描述

在這裏插入圖片描述

接着添加這個UI的UI邏輯。Game Framework要是檢測不到UI的邏輯腳本就會報錯。

創建一個腳本,我創建的名稱是UI_HelloWorld

using UnityGameFramework.Runtime;
public class UI_HelloWorld : UIFormLogic
{

}

因爲我們單單只是調用一下它,不需要它有什麼實質的功能,所以類裏面什麼都不用寫。

接着將這個腳本掛載到我們剛剛創建的UI下,再將UI保存成prefab。

在這裏插入圖片描述

在這裏插入圖片描述
接下來我們要做的,就是在ProcedureMain流程中將這個UI加載出來。

我們首先要創建一個UI分組來存放這個UI。

點開Example場景中的GameFramework,找到其中的UI子對象。

在這裏插入圖片描述

UI ComponentUI Groups下的Size改爲1,接着再給新出現的Element 0的Name隨便起一個,這裏我起的是DefaultGroup

在這裏插入圖片描述

這樣我們一會就能把UI調到這個組裏了。

打開ProcedureMain腳本,在**OnEnter()**中添加幾行代碼,讓它在進入時加載UI:

別忘了添加UnityGameFramework.Runtime程序集

using GameFramework;
using GameFramework.Procedure;
using UnityGameFramework.Runtime;  // 別忘了這個
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;

namespace Game
{
    public class ProcedureMain : ProcedureBase
    {
        // 遊戲初始化時執行。
        protected override void OnInit(ProcedureOwner procedureOwner)
        {
            base.OnInit(procedureOwner);
        }

        // 每次進入這個流程時執行。
        protected override void OnEnter(ProcedureOwner procedureOwner)
        {
            base.OnEnter(procedureOwner);
            Log.Debug("進入ProcedureMain!");
            
            // 加載框架UI組件
            UIComponent UI = GameEntry.GetComponent<UIComponent>();
            // 加載UI
            UI.OpenUIForm("Assets/Example/HelloWorld.prefab","DefaultGroup");
        }

        // 每次輪詢執行。
        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);
        }
    }
}

保存完畢後,我們就能看看效果啦。回到Unity,點擊play按鈕。

在這裏插入圖片描述

UI被我們加載了出來。

一步步點開UI Component,我們可以看到UI確實被加載在了這裏。

在這裏插入圖片描述

這一節就到這裏,下一篇文章再見。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章