Unity自定义UI组件(十一) 雷达图、属性图
来源:互联网 发布:妇科医生在线网络咨询 编辑:程序博客网 时间:2024/06/05 09:43
前言
借用梦想世界宠物属性图
想必大家都在游戏中见过属性图用于展示多种属性的数值,可以较为直观的对比某种属性的缺陷或者是哪种属性有优势。在三维可视化领域也会遇到类似的属性对比,用属性图来展示最为合适。
组件效果
- 基础效果
- 效果一
- 效果二
- 效果三
- 效果四
- 效果五
组件特点
- 一键创建,无需额外资源
- 超多属性可自定义
- 可跟具需求拓展
主要内容
- 组件实现(建造者模式)
- 组件多样化(工厂模式)
- 组件使用
详细讲解
组件实现(建造者模式)
建造者模式
- 什么是建造者模式
建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
属性图组件大致分为底图和线图两个层级,底图分为xy坐标轴和线框,线图可以分为线框和填充物,依据建造者模式的思想,我们可以分为四个部分去建造属性图,然后再统一组合展示。
建造者模式使用
我们利用接口将建造过程抽象,在实现了该接口的类的DrawRadar方法中将分布建造的内容组合起来。
- 抽象接口
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 实现接口
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
组件多样化(工厂模式)
通过上一篇 Unity自定义UI组件(十) 折线图中讲解工厂模式,所以在多样化操作中依旧使用工厂模式
工厂模式的使用
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
在客户端使用时,我们根据自己需要的类型构造对应的实例。如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
组件使用
数据输入
对于组件的开发和使用,我们需要明白一个观点,组件一定要有自己固定的数据格式,需要外界转化成对应的数据格式才可以使用,否则人人都将根据自己的需要求该组件的中的代码,而且随着组件的复杂度提升,修改的难度也大幅提升,不符合关闭修改,放开拓展的设计模式。因此需要一个代理/中介者来对数据进行处理并输出对应的数据格式。
- 客户端输入
利用泛型运行更多类型的输入,方便数据的接入
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
数据格式化
- 代理处理数据格式
利用代理处理数据并返回固定格式,代理利用反射的方法,获取固定类型中某一个属性值或者是字段的值,根据自己的使用情况来做适当的调整。当然你也拓展其他适应自己项目的方法。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
具体使用
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
Inspector面板配置
Inspector面板没有重写所以开启来比较杂乱,自己配置一下就熟悉啦,再有不懂评论区留言或者是邮箱我。
- Axis 部分是xy坐标,坐标是否显示箭头,箭头尺寸,颜色等。
- base 部分是底板网格,半径,边数,是否显示内部网格,网格颜色,网格尺寸、网格层级等。
- Layer 每个网格层级之间的颜色如果使用带颜色的模式一定要在此处配置,或者可能会出错。
- LineColor 配置每一条线的颜色
更多使用的方法在实例代码中可以看到,实例代码在文章结尾。
后续拓展
- SpringGUI中每个组件都是重新开发的基础方法用来绘制,我逐渐意识到我们可以将常用的方法封装起来作为以后的基类,加快绘制GUI的速度。
- SpringGUI中的组件基本都不具有与输入设备交互的属性,我将会注重交互这个部分为后续的组件添加与输入设备交互的功能。
- Unity自定义UI组件(十一) 雷达图、属性图
- Unity自定义UI组件(十一) 雷达图、属性图
- Unity 属性雷达图效果
- [UI]自定义View--雷达图
- Unity自定义UI组件(十) 折线图
- Unity自定义UI组件(十) 折线图
- Unity自定义UI组件(一)函数图篇(上)
- Unity自定义UI组件(二)函数图篇(下)
- Unity自定义UI组件(一)函数图篇(上)
- Unity自定义UI组件(二)函数图篇(下)
- Unity自定义UI组件(十二) 条形图篇
- 【Unity】多边形雷达图
- 自定义Android View组件——实现雷达图效果
- Android 自定义雷达图
- Unity自定义UI组件(三)饼图篇
- Unity自定义UI组件(三)饼图篇
- 自定义雷达图(CustomRadarCharView)
- 自定义View绘制雷达图
- 程序员必读书单
- set集合容器
- 使用 Rest-Assured 测试 REST API
- 装饰者模式 | Decorator Pattern
- 希尔排序
- Unity自定义UI组件(十一) 雷达图、属性图
- 打造完美的 Ubuntu16.04 开发环境
- Nginx错误ngx_slab_alloc() failed: no memory in cache keys zone "nginx_uwsgi_cache"解决方法
- Mybatis Oracle 批量导入
- Java+opencv3.2.0之中值滤波
- [算法与数据结构]
- C++虚函数和纯虚函数的区别
- Android 7.0 -- Luancher3 修改
- 二次见面,请多指教!