01.概念:管理场景中所有的面板,控制面板之间的跳转

02.项目层级目录:

Resources:存放UIPanel,习惯把所有的一个个面板做成预制源,使用时加载

Scenes:存放场景

UIFrameWork:单独的文件,存放UI框架的文件夹,方便以后导出给别的项目使用

架构图:

03.设计主菜单(将所有的面板设置为prefab)

canvas scales中UI scale model设置为 Constane Pixel Size表示窗口像素大小与实际运行的界面像素一样,但是UI组件比如Text不会改变(字体固定的)。

scale with screen size:随着屏幕的大小变化,所有的UI组件都会改变,分为根据高度与宽度适配,高度适配就是ui随着高度的变化而变化,宽度变化是不会影响UI的,设置match属性。

设置UI时按住shift:等比例缩放,ctrl:中心缩放

04.框架开发之保存面板信息(通过json和枚举)

层级结构:

首先创建面板枚举类UIPanelType(一个面板对应一个枚举成员):

1 usingUnityEngine;2 usingSystem.Collections;3 usingSystem;4
5
6 public enumUIPanelType  {7 ItemMessage,8 Knapsack,9 MainMenu,10 Shop,11 Skill,12 System,13 Task14 }

创建文本文件,保存面板的类型和路径(这样面板只要放在Resources文件夹下,路径保存好可以随意放,写完一个Json文档后可以百度Json校验检查是否正确:http://www.json.cn/):

注意:因为用JsonUtility解析json文件,不是别数组的格式,要把数组包装成一个对象就是外面加{}。同时在VS编辑json文件一般会保存成以前的目录(如果你一直没有移动不会有问题,比如这个项目移动到了resource文件夹下,但是还是会保存在它初始创建的文件夹,这样识别的还是前面的文件,还是会有同样的错误)。

解析Json文件得到面板路径:

首先创建json脚本对应的类UIPanelInfo:

1 usingUnityEngine;2 usingSystem.Collections;3 usingSystem;4 //序列化:把内存上的东西放在硬盘上成为文本文件,命名空间using System;5 //ISerializationCallbackReceiver:接口,实现OnAfterDeserialize OnBeforeSerialize两个方法,与JsonUtility相对应,是其扩展自定义的内容
6 [Serializable]7 public classUIPanelInfo :ISerializationCallbackReceiver {8 [NonSerialized]9     //注意要跟json脚本里面的类型对应,否则无法解析,json文件就相当于UIPanelInfo类型数组
10     public UIPanelType panelType;//不能解析该类型,因此让其不序列化和反序列化
11     public stringpanelTypeString;12     //{13     //get//进行序列化14     //{15     //return panelType.ToString();16     //}17     //set//进行反序列化18     //{19     //UIPanelType type =(UIPanelType)System.Enum.Parse(typeof(UIPanelType), value);//写在这时候不会调用这个方法20     //panelType = type;21     //}22     //}
23     public stringpath;24
25     //反序列化成功会调用该方法   反序列化:从文本信息 到对象的过程 相当于set方法
26     public voidOnAfterDeserialize()27 {28         UIPanelType type = (UIPanelType)System.Enum.Parse(typeof(UIPanelType), panelTypeString);//把字符串转换成枚举类型,枚举类型无法使用as,只能强转
29         panelType =type;30 }31     //在序列化之前调用 相当于get方法
32     public voidOnBeforeSerialize()33 {34
35 }36 }

建立UIManager脚本读取面板类型和信息:

1 usingUnityEngine;2 usingSystem.Collections;3 usingSystem.Collections.Generic;4 usingSystem;5
6 public classUIManager {7  private Dictionary<UIPanelType, string> panelPathDict;//存储所有面板Prefab的路径
8 [Serializable]9     //UIPanelInfo类,json脚本整体对应的一个类,即解析json脚本得到就是这个类的对象
10     classUIPanelTypeJson11 {12         public List<UIPanelInfo>infoList;13 }14     private voidParseUIPanelTypeJson()15 {16         panelPathDict = new Dictionary<UIPanelType, string>();17
18         TextAsset ta = Resources.Load<TextAsset>("UIPanelType");//加载进来就是TextAsset类型
19
20         UIPanelTypeJson jsonObject = JsonUtility.FromJson<UIPanelTypeJson>(ta.text);//注意<>里面一定要传类,//会调用反序列化 序列化方法21
22         foreach (UIPanelInfo info injsonObject.infoList)23 {24             //Debug.Log(info.panelType);
25             panelPathDict.Add(info.panelType, info.path);//字典方便用类型找到路径
26 }27 }28 }

转载于:https://www.cnblogs.com/dsh20134584/p/7338671.html

UI(UGUI)框架(一)---------概述与保存/读取面板类型与路径相关推荐

  1. UI自动化框架 基于selenium+pytest和PO分层思想

    最近在编写UI自动化框架,现在将一些碎片化东西进行梳理,便于记忆 同时,为了方便于各个模块的独立管理,以及秉承高复用,低耦合的思想,这里是根据PO模型编写,同时将所有的模块进行了独立,页面和元素,以及 ...

  2. python(十二)Uiautomator2搭建UI自动化框架实战

    前言 由于公司UI自动化框架底层用的是Uiautomator2,所以我就用Uiautomator2搭了一套UI自动化框架,并运用某软件做了一个实战,思路其实和之前写的Appnium一样的 ps:这里其 ...

  3. 测试开发 - 十年磨一剑(五)UI自动化测试框架与分层结构

    一.UI自动化测试框架 Selenium是自动化工具,工具,工具!面试的时候不想再听到谁说用的测试框架是Selenium. 构成框架的组件,最起码应该具备以下的功能,才能够称为一个完整的自动化测试框架 ...

  4. UI自动化框架思路整理(Python+selenium+unittest+html)

    本文主要以PO思想将页面元素和代码分离,以及执行多用例的UI自动化框架. 下图是整个框架图: 在准备测试一个功能时,我们可以通过手工去测,也可以用UI自动化框架去实现多用例的操作. 自动化框架思路:在 ...

  5. UI自动化测试框架搭建——标记性能较差用例

    在拿到性能数据后需要将数据利用起来,下面对性能数据进行分析 实现:如果性能达到设定的阈值,那么这段时间执行的用例就是性能较差的用例 确定阈值 首先确定一个阈值来当做性能的告警值,暂定为以下算法 # t ...

  6. UI自动化测试框架搭建-标记性能较差用例

    在拿到性能数据后需要将数据利用起来,下面对性能数据进行分析 实现:如果性能达到设定的阈值,那么这段时间执行的用例就是性能较差的用例 确定阈值 首先确定一个阈值来当做性能的告警值,暂定为以下算法 # t ...

  7. 20.UI自动化测试框架搭建-标记性能较差用例

    在拿到性能数据后需要将数据利用起来,下面对性能数据进行分析 实现:如果性能达到设定的阈值,那么这段时间执行的用例就是性能较差的用例 确定阈值 首先确定一个阈值来当做性能的告警值,暂定为以下算法 # t ...

  8. python3.7界面设计_基于selenium+Python3.7+yaml+Robot Framework的UI自动化测试框架

    前端自动化测试框架 项目说明 本框架是一套基于selenium+Python3.7+yaml+Robot Framework而设计的数据驱动UI自动化测试框架,Robot Framework 作为执行 ...

  9. python ui自动化测试框架_基于python语言下的UI自动化测试框架搭建(一)

    最近在搭一个UI自动化测试框架,想把整个搭建过程分享出来,如果有不对的地方,希望大家能够指正,首先创建一个名称为,antomation_framework_demo的工程文件, pycharm中工程及 ...

最新文章

  1. 图解Win32汇编字符串和Debug输出
  2. PHP项目部署在tomcat,在Tomcat中部署Web项目的操作方法(必看篇)
  3. 等压线上怎么画风向_战场上骑兵应该怎么拔刀?从清人佩刀为何总是刀柄向后说起...
  4. Python编程从入门到实践~异常
  5. 由 go orm 引发的探索
  6. java 声明静态类,为什么你不能在Java中将类声明为静态?
  7. BeanPropertyRowMapper使用注意事项
  8. 【传输文件】文件传输协议FTP、SFTP和SCP
  9. html 按键hover,按钮hover效果
  10. 使用windows 10 安装中文版语言
  11. 电源大师课笔记 2.5
  12. sqlmap安装总结
  13. hevc参考代码matlab版,HEVC部分源码剖析
  14. 计算机网络面试需要掌握的知识点汇总
  15. python解决约瑟夫问题
  16. storm java 例子_Storm 运行例子
  17. 两个相离圆上各取一点P、Q,求线段PQ中点M的轨迹。
  18. wordpress文章自动同步天涯博客插件wp2Tianya发布
  19. 生活中的统计概率思维
  20. 金华职业技术学院计算机教研室主任,机械技术系主任及教师赴金华职业技术学院走访调研...

热门文章

  1. 在Linux上使用AFL对Stagefright进行模糊测试
  2. Android6.0 wakelock深入分析
  3. 三星t800Android 6.0,6.6毫米品质平板 三星GALAXY Tab S发布
  4. Qt模型、视图解读之视图
  5. java文本框背景_background 设置文本框背景图
  6. shell读取excel_[PHP 开源类库]simple-Excel — 兼具优雅与性能的Excel和CSV文件读写工具...
  7. echarts柱状图显示百分比_Echarts 饼状图显示信息,内容,值,百分比都显示的代码 更改图例等问题汇总...
  8. hdu3694(四边形的费马点)
  9. BZOJ 4006 Luogu P3264 [JLOI2015]管道连接 (斯坦纳树、状压DP)
  10. php swool协程,swoole如何实现协程