Unity 编辑器扩展精粹_第五章.md 3.8 KB

这个设计上,是一个待办事项软件,数据体,是弄一个Todo类,存储待办事项文本,还有一个是否完成的特性; 再弄一个Todos列表容器,去存储待办事项相关;

![[Pasted image 20240320155750.png]]

这个容器的调用,是异常情况下的,处理,也就是没拿到数据的,最初初始化状态

![[Pasted image 20240320160618.png]]

![[Pasted image 20240320160647.png]]

最开始时候,数据模型为空的时候,才会调用这个

![[Pasted image 20240320160748.png]]

一般运行时,使用的数据模型结构,是这个

![[Pasted image 20240320160925.png]]

这是运行时,使用的数据容器,获取器

![[Pasted image 20240320161144.png]]

Unity自带了一个测试运行器,入口

![[Pasted image 20240320165003.png]]

代码上,加Test标签

![[Pasted image 20240320165026.png]]

就会自动检索出来

![[Pasted image 20240320165050.png]]

运行,功能正常

![[Pasted image 20240320165131.png]]

数据模型,有一个升级更新器,使用的是Json解析序列化,在调用之前,是需要导入对应的,dll插件

![[Pasted image 20240320170428.png]]

![[Pasted image 20240320170504.png]]

![[Pasted image 20240320170127.png]]

更新器的Excute函数,是调用ConvertOld2New,遍历 待办事项 列表,将旧的数据模型,替换到新的数据模型

![[Pasted image 20240320170536.png]]

旧的

![[Pasted image 20240320170755.png]]

新的,包含guid实例化的Id序号,开始/结束 日期时间,完成状态,任务优先级,包含子任务,是否隐藏等信息

![[Pasted image 20240320170817.png]]

旧的任务列表

![[Pasted image 20240320170957.png]]

新的任务列表

![[Pasted image 20240320171012.png]]

数据模型,完成升级更新之后,需要一个,数据模型加载器; 这里是使用,unity的数据本地持久化,EditorPrefs.GetString和SetString进行获取和设置,对数据模型,进行加载和保存

![[Pasted image 20240320171057.png]]

加载,也是通过Json接口,完成解序列化即可,如果没拿到数据,就需要更新一下,数据信息

![[Pasted image 20240320171214.png]]

保存数据

![[Pasted image 20240320171255.png]]

新的Todo代办类,包含静态接口,根据花费时间数值,修改显示样式

![[Pasted image 20240320171601.png]]

获取,花费的时间,是结束时间和开始时间的差值

![[Pasted image 20240320171745.png]]

还有两个枚举,分别是,代办事项当前状态、优先级

![[Pasted image 20240320171828.png]]

除了待办事项,还有其他几种数据模型; 笔记的数据模型,是由Id和Content文本内容构成,在构造函数里,通过NewGuid方法,自动赋予一个独一无二的Id索引;

![[Pasted image 20240321105641.png]]

分类管理

![[Pasted image 20240321105806.png]]

产品和特性

![[Pasted image 20240321105853.png]]

针对数据模型,有一个统一的管理类; 创建和添加待办事项,相关函数; 还有4个获取器,分别获取,上述的几种数据模型容器;

![[Pasted image 20240321105930.png]]

移除笔记容器,整体的保存功能

![[Pasted image 20240321113134.png]]

之前提及过的,数据模型获取器

![[Pasted image 20240321113224.png]]

从待办事项字典容器,根据id这个key,获取到对应的,待办事项; 创建一个新的笔记文件接口; 排序分类列表;

![[Pasted image 20240321113311.png]]

移除对应的分类管理、创建分类管理,有调用之前的颜色工具类ColorUtil的,颜色转文本方法ToText; 移除,特定待办事项; 通过Index索引,拿到特定的分类;

![[Pasted image 20240321113714.png]]

Json序列化数据模型的打印; 产品的创建和删除逻辑;

![[Pasted image 20240321113912.png]]