UI框架
来源:互联网 发布:主动防御系统 知乎 编辑:程序博客网 时间:2024/04/27 23:38
UI框架
UI状态机
punlice enum EUiState
{
Unknow,//未知
Init,//空
Lobby,//主界面
Login,//登陆
Prota,//主角
Task,//任务
Loadind,//进度条
}
GamaStart中初始化:UI状态机和ui系统
UI状态机:委托事件 记录切换状态之前和之后回调 并记录当前ui状态
public delegete void OnUiStateChangeDelegate(EUiState oldState,EUiState newState);
public event OnUiStateChangeDelegate BeforeUiStateChangeEvent;
public event OnUiStateChangeDelegate AfterUiStateChangeEvnet;
public void ChangeUiState(EUiState state)
{
EUiState froState = mUiState;
EUiState toState = state;
if(BeforeUiStateChangeEvent!=null)
{
BeforeUiStateChangeEvent(fromeState,toState);
}
mUiState = state;
if(AfterUiStateChangeEvnet!=null)
{
AfterUiStateChangeEvnet(fromeState,toState);
}
}
在自己的Init()函数中注册事件,然后在每个view加载的时候OnInit初始化时候就要注册这个事件(before判断toState不是本身界面,就关闭本身,在After中判断是本身界面就打开本身)这样的话在ui状态机中的事件函数基本不做太多的处理
另外一种情况比如 商店界面有好多子界面,这个要做另外的处理,商店类中包各个子类
先定义子界面的枚举
publice enem ESubView
{
...,
...,
...,
}
点击不同的标签按钮出发private void ChangeSubView(ESubView subView){}//记录当前子界面
函数功能根据ESubView关闭和打开相应的子界面同时设置参数填充内容
UI系统:UIManager.CreateInstance.Init()加载预制体,用泛型,view预制体的名字和脚本的名字一样,加载预制体的时候就可以添加view脚本,并初始化脚本(查找组建,绑定按钮监听事件等)
View脚本继承实体类Singleton<T>继承View基类,(实体类一种是需要创建对象,出现在场景面板上,一种是只需要获得脚本本身)
单体类(泛型)
一种是需要在场景中生成的那种
sInstance = new GameObject(typeof(T).ToString()).AddComponent<T>();
一种是不需要生成比如view预制体 加载的时候初始化中给单例负值 sInstance = this. as T;
还有一种是比如参数配置的预制体,但是又不需要在场景中生成sInstance = new T();
客户端---服务端
请求(客户端)------回调(服务器返回的结果)
物品点击事件:比如背包 点击其中一个背包如何处理
每个背包属于一item都要一个脚本,点击触发点击函数,同时脚本有有委托事件
public delegate void OnItemClickDelegate(UserEquipItem item);
public event OnItemClickDelegate OnItemClick;
参数是脚本本身
在按钮触发函数中
if(OnItemClick;)
{
OnItemClick(this);
}
在view中创建item设置参数的时候,并注册这个函数item.OnItem +=OnItemClick;
在OnItemClick(UserEquipItem item){}做相应的处理
UI状态机
punlice enum EUiState
{
Unknow,//未知
Init,//空
Lobby,//主界面
Login,//登陆
Prota,//主角
Task,//任务
Loadind,//进度条
}
GamaStart中初始化:UI状态机和ui系统
UI状态机:委托事件 记录切换状态之前和之后回调 并记录当前ui状态
public delegete void OnUiStateChangeDelegate(EUiState oldState,EUiState newState);
public event OnUiStateChangeDelegate BeforeUiStateChangeEvent;
public event OnUiStateChangeDelegate AfterUiStateChangeEvnet;
public void ChangeUiState(EUiState state)
{
EUiState froState = mUiState;
EUiState toState = state;
if(BeforeUiStateChangeEvent!=null)
{
BeforeUiStateChangeEvent(fromeState,toState);
}
mUiState = state;
if(AfterUiStateChangeEvnet!=null)
{
AfterUiStateChangeEvnet(fromeState,toState);
}
}
在自己的Init()函数中注册事件,然后在每个view加载的时候OnInit初始化时候就要注册这个事件(before判断toState不是本身界面,就关闭本身,在After中判断是本身界面就打开本身)这样的话在ui状态机中的事件函数基本不做太多的处理
另外一种情况比如 商店界面有好多子界面,这个要做另外的处理,商店类中包各个子类
先定义子界面的枚举
publice enem ESubView
{
...,
...,
...,
}
点击不同的标签按钮出发private void ChangeSubView(ESubView subView){}//记录当前子界面
函数功能根据ESubView关闭和打开相应的子界面同时设置参数填充内容
UI系统:UIManager.CreateInstance.Init()加载预制体,用泛型,view预制体的名字和脚本的名字一样,加载预制体的时候就可以添加view脚本,并初始化脚本(查找组建,绑定按钮监听事件等)
View脚本继承实体类Singleton<T>继承View基类,(实体类一种是需要创建对象,出现在场景面板上,一种是只需要获得脚本本身)
单体类(泛型)
一种是需要在场景中生成的那种
sInstance = new GameObject(typeof(T).ToString()).AddComponent<T>();
一种是不需要生成比如view预制体 加载的时候初始化中给单例负值 sInstance = this. as T;
还有一种是比如参数配置的预制体,但是又不需要在场景中生成sInstance = new T();
客户端---服务端
请求(客户端)------回调(服务器返回的结果)
物品点击事件:比如背包 点击其中一个背包如何处理
每个背包属于一item都要一个脚本,点击触发点击函数,同时脚本有有委托事件
public delegate void OnItemClickDelegate(UserEquipItem item);
public event OnItemClickDelegate OnItemClick;
参数是脚本本身
在按钮触发函数中
if(OnItemClick;)
{
OnItemClick(this);
}
在view中创建item设置参数的时候,并注册这个函数item.OnItem +=OnItemClick;
在OnItemClick(UserEquipItem item){}做相应的处理
0 0
- UI框架
- UI框架
- UI框架
- UI框架
- ui框架
- UI框架
- UI框架
- UI框架
- javascript 的 UI 框架
- javascript 的 UI 框架
- symbian ui框架设计
- JS通用UI框架
- Web UI框架
- UI框架和应用
- Jquery UI框架
- Liger UI框架
- Blackberry UI框架
- jquery easy ui 框架
- Root Container #Facebook Relay文档翻译#
- C++隐式转换各种发生情况
- oracle,sqlserver,mysql三种数据库连接Demo
- windows7共享文件给vmware虚拟机中的Linux系统教程
- cocos2d-x 3.7 C++ 使用socket连接客户端与服务器(JAVA做服务端)
- UI框架
- php学习基础篇之框架集 frameset
- symfony学习笔记--第二步,创建Bundle
- 黑马程序员————java实现冒泡排序
- Cocos2dx 3.0资源加载进度条Loading...
- mysql主从 配置
- 流水号算法
- abap修改已有的程序
- 黑马程序员_JAVA获取网页源代码