| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
##TTUI Framework是什么? Ting Ting UI Framework是一个供Unity3D引擎使用的简易的UI消息分发架构。基于NGUI。它的目录如下:
//放置在Unity项目的Assets文件夹下: . ├── .gitignore ├── README.md ├── NGUI //使用的NGUI ├── Resources //存放测试中使用的UI页面 │ └── TTUITest.prefab ├── TTUI //TTUI的文件夹 │ ├── Src // sources │ │ ├── Constant // 常量&辅助类 │ │ │ ├── TTUIFrameID.cs //UI的ID在这里定义 │ │ │ └── TTUIHelper.cs //辅助类 │ | ├── Factory │ | | ├── TTUIFactory.cs //抽象类,用于批量注册UI信息 │ │ | └── TTUIBuilder.cs //注册UI信息的具体执行者 │ | ├── Manager //管理器模块 │ | | ├── TTUIFrameManager.cs //UI页面管理模块 │ │ | └── TTUIMsgManager.cs //UI消息管理模块 │ | ├── Message //定义UI的Message │ │ | └── TTUIMessage.cs //所有UI消息的基类,自定义的UI消息需要继承该类 │ | ├── UI //定义UI的页面 │ │ | └── TTUIFrame.cs //所有UI类型的基类,定义了最基本的一些功能 │ | └── TTUICore.cs //提供了对UI各个控制模块的引用,操作入口 │ └──Test //测试脚本 │ ├── Frame //UI页面类,继承自TTUIFrame | | └── TTUITestFrame.cs │ ├── Item //MonoBehaviour脚本,用来接受用户的点击 | | ├── TTUITestItem.cs //创建消息,并发送到消息管理器 | | └── TTUITestItem1.cs │ ├── MonoScript //捆绑在测试UI资源上的MonoBehav脚本 | | └── TTUITestScript.cs │ ├── Msg //测试UI消息,继承自TTUIMessage | | └── TTUITestMsg.cs │ └── TTUITestFactory.cs //继承自TTUIFactory,用来注册测试的UI信息 | | | └── TTUITestMain.cs //测试入口 | │ └── TTUITestScene.unity //测试场景
##TTUI Framework如何测试? ###1.基本概念 ####1.1 TTUIFrame 由于主要的思想是将UI资源注册、将逻辑和具体UI分离,因此我在TTUIFrameID.cs文件中首先定义了一些UI页面的ID:
//TTUIFrameID.cs
public class TTUIFrameID {
public const int InitTestFrame = 0x01;
public const int InitTestFrame2 = 0x02;
//TODO
}
并且对每个UI页面进行了一层抽象,创建了一个不依赖于MonoBehaviour的UIFrame类——TTUIFrame。所有的具体UI页面的类都必须继承它。 例如在测试中,我定义的TTUITestFrame便继承于它。 这样,我们就可以通过注册UI的ID以及UI对应的UIFrame类来管理我们的UI系统了。而负责这个业务的类便是TTUIFrameManager类。
####1.2 TTUIMessage 除了将UIFrame注册管理之外,我还需要将消息和它对应的回调方法进行注册管理。因此也需要提供一个ID以及一个委托对象(作为回调函数)。 其中ID的部分使用了我在辅助类TTUIHelper中提供的哈希函数,将字符串转换成为ID进行注册。
//TTUIMessage.cs
public abstract class TTUIMessage {
public TTUIMessage(string name)
{
this.ID = TTUIHelper.StringHash(name);
}
...
同样,我还会提供一个类TTUIMsgManager用来管理UI消息。
###2.注册分发 ####2.1注册UIFrame类 由于UI资源实例化的工作是通过抽象出来的UIFrame类来处理的,因此在注册UIFrame类时即需要关联UI的ID和其对应的UIFrame类,同时也要提供相应的资源路径信息。这里我使用了一个抽象工厂TTUIFactory来实现批量注册多个UI,在具体的环境中,用户需要继承该工厂,自己添加自定义的UI信息。例如Test中的TTUITestFactory,只添加了一个UI:
public class TTUITestFactory : TTUIFactory {
#region Public Methods
/// <summary>
/// 以FrameID作为key,创建FrameID和对应的UI类之间的联系。
/// </summary>
public override void BuildCommonUIFrame()
{
BuildUIFrame<TTUITestFrame>(TTUIFrameID.InitTestFrame);
//TODO
}
/// <summary>
///以FrameID作为key,注册UI资源的地址,用于创建id和prefab之间的关联
///使用时,在次方法下添加具体的k-v(id-资源路径)。
/// </summary>
public override void RegisterUIFrameAssetes()
{
RegisterAssets(TTUIFrameID.InitTestFrame, "TTUITest");
//TODO
}
#endregion
}
###3.使用Test 需要注意的是,我并没有上传meta文件,因此可能会出现脚本引用丢失的问题。但是我想这应该不是什么大问题。 需要注意的是,将测试入口TTUITestMain.cs脚本挂载好。在TTUITestMain.cs文件中: 首先创建TTUI中各个模块的引用:
TTUICore.Create();
之后,在利用自己定义的TTUITestFactory工厂来注册页面信息:
TTUITestFactory uifact = new TTUITestFactory(); uifact.BuildCommonUIFrame(); uifact.RegisterUIFrameAssetes();
同时,不要忘了要在Update函数中更新UI的各个模块:
TTUICore.Update();
| Back | FazBrowse Home | New Git URL |