脫離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 Component的UI 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確實被加載在了這裏。
這一節就到這裏,下一篇文章再見。