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

解析第一个子页签的相关逻辑,对应表现

![[Pasted image 20240321150014.png]]

对应逻辑; 其中TodoListInputView是,新增待办事项的输入框; 构造函数中,设定输入框的,设定完成回调OnTodoCreate的具体逻辑,调用数据模型类,对应方法,添加待办事项,保存; 打印对应的Json结构;

![[Pasted image 20240321150043.png]]

输入框对应的逻辑,使用PopupView控件,设定一个分类的,标签枚举; 再设置一个TextAreaView输入框;

![[Pasted image 20240321154151.png]]

添加按钮,创建一个Todo待办事项,设定对应的标签属性,调用OnTodoCreate回调,在上述的TodoListView中,会完善它的具体创建逻辑

![[Pasted image 20240321154312.png]]

单个待办事项,对应表现,是这个

![[Pasted image 20240321154631.png]]

这是它,对应的逻辑; 其中包含,开始和完成的按钮空间,还有CategoryComponent标签分类组件; 构造函数中,完成V1.Todo的数据类赋值,点击开始任务、完成任务 按钮的构建; 其中包含各个对应的时间戳:开始时间、结束时间; 调用数据模型的保存逻辑,刷新页面;

![[Pasted image 20240321154659.png]]

CategoryComponent分类组件,对应逻辑,是一个boxView的显示控件,Data数据类,设定一下颜色就好

![[Pasted image 20240321154828.png]]

继续构建,布局显示控件

![[Pasted image 20240321155510.png]]

使用TreeNode树节点,串联起来,各个UI控件,然后再通过Add2FirstLine方法,加上”process“和”add“两个按钮控件,对应触发的逻辑,分别是 OpenProcessWindow 和 OpenTodoEditor

![[Pasted image 20240321155555.png]]

表现

![[Pasted image 20240321155845.png]]

前者逻辑,是使用 问题&选择 系统,拆分逻辑,跟之前提及的,笔记转待办事项,拆分逻辑,基本一致

![[Pasted image 20240321155909.png]]

点击后的表现

![[Pasted image 20240321160046.png]]

除了添加,待办事项,编辑当前待办事项,也是用 OpenTodoEditor这个接口

![[Pasted image 20240321160931.png]]

表现

![[Pasted image 20240321161003.png]]

点击,包含Category分类,优先级选项,是否修改成 隐藏 待办事项,保存修改

![[Pasted image 20240321161158.png]]

如果隐藏,就会加到这个子页签

![[Pasted image 20240321161310.png]]

显隐,对应按钮的显示样式,触发函数

![[Pasted image 20240321161400.png]]

是否可显现的参数,是hide的布尔取反

![[Pasted image 20240321161437.png]]

![[Pasted image 20240321161458.png]]

这是整体的 待办事项 编辑器 逻辑; 使用PopupView控件,配合数据模型,整体的Model.Categories标签组,新增标签的分类枚举;

![[Pasted image 20240321161540.png]]

总的标签分类汇总,在这个子页签,后面会解析

![[Pasted image 20240321161755.png]]

复习,优先级是Todo数据类里面,这个序列化的枚举

![[Pasted image 20240321161830.png]]

回到Todo界面类,Todo编辑器的优先级调用,和标签分类,使用PopupView控件,同理

![[Pasted image 20240321161932.png]]

保存修改,是根据传参todo是否为空,判断是,编辑已有待办事项,还是新增子待办事项; 如果只是编辑已有的,就修改对应的参数,save就好,如果是添加子待办事项,就需要加到Todo的Children列表;

![[Pasted image 20240321162114.png]]

![[Pasted image 20240321162241.png]]

表现:

![[Pasted image 20240321162317.png]]

子控件的逻辑,包含缩进相关,是在OnRefresh刷新函数实现

![[Pasted image 20240321162426.png]]

刷新函数还会根据,事项状态,控制对应按钮的显隐

![[Pasted image 20240321162501.png]]

还有优先级的文本和颜色,也是在刷新函数,有相关逻辑处理

![[Pasted image 20240321162534.png]]