obsidian/笔记文件/2.笔记/Unity 编辑器扩展精粹_第五章.md
2025-03-26 00:02:56 +08:00

3.8 KiB
Raw Permalink Blame History

这个设计上是一个待办事项软件数据体是弄一个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