下载新的工程
为了更加方便的使用gameframework的相关功能,我们先去下载
新的工程
注意我们下载的时候不要用zip下载,用clone的方式。
假设我们已经下载完毕
我们的目录结构是这样的:
我们可以点击自带的场景先玩一玩,这个项目就是金典的飞机游戏,我们实战的最后的目标就是复现这个
新建我们的目录
我们新建一个文件夹(NewGameMain),创建一个新的场景(NewStarForce)
目录如图所示:
这一章我们只会用到ui的相关知识
我们在NewGameMain中创建两个文件夹
我们打开NewStarForce场景
将GameFramework中的预制体拖入
并在UI组件中加入一个Canvas(命名为UI Instance)
目录如图所示:
点击UI组件,添加InstanceRoot
添加UIGroups
下一步,我们来搭建我们的UI
我们新建一个场景Test
我们就做一个最简单的开始界面
我们在Test场景中创建一个Canvas,在创建一个空物体叫做StartGameForm
我们在这个空物体创建一个背景两个按钮
目录结构如图:
效果如图:
下一步我们将StartGameForm拖进NewGameMain/UI/ 里面做成预制体
下面我们开始写脚本:
我们在NewGameMain/Scripts中创建两个脚本
ProcedureStartGame.cs
StartGameForm.cs
代码(ProcedureStartGame.cs):
using GameFramework.Procedure;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
namespace NewStarForce
{
public class ProcedureStartGame : ProcedureBase
{
protected override void OnEnter(ProcedureOwner procedureOwner)
{
base.OnEnter(procedureOwner);
GameEntry.GetComponent<UIComponent>().OpenUIForm("Assets/NewGameMain/UI/StartGameForm.prefab", "Normal");
}
}
}
代码(StartGameForm.cs):
//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
// Homepage: https://gameframework.cn/
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
using UnityEngine;
using UnityGameFramework.Runtime;
namespace NewStarForce
{
public class StartGameForm : UIFormLogic
{
protected override void OnInit(object userData)
{
RectTransform transform = GetComponent<RectTransform>();
transform.anchorMin = Vector2.zero;
transform.anchorMax = Vector2.one;
transform.anchoredPosition = Vector2.zero;
transform.sizeDelta = Vector2.zero;
}
protected override void OnRecycle()
{
}
protected override void OnOpen(object userData)
{
}
protected override void OnClose(bool isShutdown, object userData)
{
}
protected override void OnPause()
{
}
protected override void OnResume()
{
}
protected override void OnCover()
{
}
protected override void OnReveal()
{
}
protected override void OnRefocus(object userData)
{
}
protected override void OnUpdate(float elapseSeconds, float realElapseSeconds)
{
}
protected override void OnDepthChanged(int uiGroupDepth, int depthInUIGroup)
{
}
}
}
代码写完我们开始配置一些东西;
首先我们将StartGameForm.cs脚本挂载到StartGameForm上(注意挂载到预制体上,不要挂载到Test场景的那个)
然后我们切换切换到NewStarForce场景
点击Procedure,配置如图所示:
点击UI,配置如图所示:
调试完毕时候我们即可运行:
运行结果:
一个UI的打开流程大概就这么多
我们来总结一下(对于一个空项目):
1.首先创建创建游戏场景,设置UI配置(UIGroup,UIGroupHelper),
2.创建测试场景,搭建UI界面,保存成预制体
3.创建流程用来打开UI界面(GameEntry.GetComponent().OpenUIForm(“Assets/NewGameMain/UI/StartGameForm.prefab”, “Normal”);)
4.调整Procedure配置
5.运行成功。
如果我们还想继续创建更多的UI界面
1.利用测试场景,搭建UI界面,保存成预制体
2.GameEntry.GetComponent().OpenUIForm(“Assets/NewGameMain/UI/StartGameForm.prefab”, “Normal”);//用这个函数打开ui
3.修改流程
4.运行
UI的关闭
我会在实战三中和Event一起使用
下期预告
GameFramework实战三(UI的关闭与Event事件系统)