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

4.2 KiB
Raw Blame History

回到待办事项子页签逻辑刷新函数会先清空mTodosParentContainer集合再遍历数据容器的Todos列表根据分类和优先级排序通过AddChild接口重新加入到mTodosParentContainer集合

!Pasted image 20240321164943.png

以上,是第一个子页签的相关逻辑; 开始解析,第二个子页签”隐藏清单“;

!Pasted image 20240321165218.png

对应的实例化,菜单按钮,点击注册

!Pasted image 20240321165305.png

这是”隐藏清单“对应的,具体逻辑,比较简单直接

!Pasted image 20240321165430.png

其中,刷新函数,也是遍历数据容器,筛选出 非完成 + Hide布尔为true 的事项,显示出来

!Pasted image 20240321165504.png

开始解析,第三个 子页签 ”分类管理“

!Pasted image 20240321165620.png

对应实例化和菜单入口

!Pasted image 20240321165653.png

这是具体的对应逻辑; 添加一个”+“按钮,添加新的分类; RegisterEvent注册自身的点击事件显隐

!Pasted image 20240321170107.png

刷新函数遍历数据容器的Categories集合绘制分类标签列表 其中,创建新标签的逻辑,和编辑当前标签的逻辑,都是调用 OpenCategoryEditor接口只是有无传参的区别 还有删除按钮逻辑;

!Pasted image 20240321170224.png

CreateSubWindow创建一个子窗口用来编辑分类 编辑分类的名字、颜色; 如果传参category为空就是”添加“按钮的相关逻辑调用数据模型管理类的Model.CreateCategory创建新的标签分类

!Pasted image 20240321170400.png

else就是不为空也就是编辑当前已有标签列表就是”保存“按钮对应的相关逻辑

!Pasted image 20240321170844.png

关闭子窗口逻辑也加到OnHide隐藏窗体的重写函数中

!Pasted image 20240321170915.png

分类编辑子窗口,对应表现

!Pasted image 20240321171031.png

第四个子页签,”已完成“

!Pasted image 20240321171057.png

对应逻辑实例化,和菜单按钮触发

!Pasted image 20240321171138.png

已完成列表界面,对应具体逻辑

!Pasted image 20240321171159.png

刷新函数筛选出事项状态是TodoState.Done的然后排序是根据完成时间FinishedAt.Date 时间段的实例,参考TimeSpan的用法这里totalTime初始化时间段为0然后加上各事项的使用时间 UsedTime 即可; 通过yyyy年MM月dd日的样式显示出来总共的消耗时间 最终foreach遍历排序后的数据组通过CreateTodoView函数创建一个个 已完成 事项;

!Pasted image 20240321171257.png

时间的显示表现

!Pasted image 20240321171917.png

具体逻辑实例化FinishedTodoView类这是单个 已完成 事项 对应的界面类

!Pasted image 20240321171719.png

表现

!Pasted image 20240321171813.png

单个 已完成 事项 界面类,对应逻辑; 其中的reset重置按钮是可以把事项恢复成NotStart状态这会变回Todo待办事项换到第一个子页签列表 完成时间,是基于 FinishedAt 字段,修改样式显示; 删除按钮,也是调用对应的数据删除接口即可;

!Pasted image 20240321171958.png

开始解析,第三个总页签,”产品“

!Pasted image 20240321172249.png

对应的逻辑入口

!Pasted image 20240321173547.png

对应的具体实现逻辑,最外部的,是一个简单的”创建产品“按钮,还有全局点击事件触发,注册; 这个页签的逻辑,是逐渐嵌套展开的,所以最外层的,相对简单;

!Pasted image 20240321173615.png

回顾一下,有一个产品版本相关的类; 其中有Version版本笔记列表容器、待办事项容器事项获取器添加/移除 待办事项等;

!Pasted image 20240321173851.png

版本是由三个字段组成

!Pasted image 20240321174043.png

继续回顾一下产品类Product还有特性类Feature 产品是包含,不同的特性、不同的版本; 特性是有子特性容器Children后续表现上会是缩进嵌套的样式

!Pasted image 20240321174116.png