有一个UI主面板, MainPannel, 主面板上有几个图标,分别是 任务,背包,战斗,技能等按钮,点击按钮,弹出相应的子面板,如何设计?
示例图片:
把每一个UIPannnel做成一个预设体, 写一个UIPannel信息的配置文件,例如: excel
loginPannel | UI/loginpannel |
---|---|
bagPannel | UI/bagPannel |
第一列是pannel的名字,第二列是在Resoureces文件夹下面的路径
加载UIPannel预设:
可以把配置文件解析到一个 Dictionary<Name,Path> uiPathDic里面;使用Resourece.load(uiPathDic[Name])加载UI面板的预设,可以缓存在List里面;
如果有多个UIPannel加载进来,如何确定多个UIPannel面板之间的层级关系
使用栈这种数据结构来存储加载进来的UIPannel,由于不同的UIPannel是不同的类,抽象出来一个PannelBase类,用栈Stack来存储示例还的Pannel;这样会有层级性;
每实例化一个Pannel,可以用字典Dictionary<Name,PannelBase>缓存起来,不至于再次加载的时候,消耗性能;
封装一个UIManager单例类,在单例中
实现 入栈,出栈, 获取PannelBase的方法;
如何用栈来管理UIPannel
在PannelBase中抽象 四个方法,然后在具体的子类中实现;
OnEnter(); 入栈时调用,在栈顶显示
OnPause() ; 有新的Pannel入栈时调用;
OnResume() ;再次成为栈顶元素时,调用;
OnExit(), 出栈时调用,一般是销毁操作
如果不涉及到场景切换,上面的框架是够用了,如果UI面板在多个场景都有用到,而且和具体场景的某个游戏物体有关联的时候,这个时候如何绑定具体的事件?