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

5.0 KiB
Raw Blame History

回到第三个总页签产品列表类创建产品的OpenProductEditor方法除了在页面开始的时候调用还可以用于编辑已有的产品信息 解析一下函数体逻辑通过CreateSubWindow接口创建子窗口文本label显示名称、描述文本输入区域TextAreaView是用于输入上述俩label对应的具体值

!Pasted image 20240322124745.png

再弄一个保存按钮,用来保存修改即可

!Pasted image 20240322125331.png

在刷新函数中是遍历数据容器的Products集然后调用产品对应的界面类ProductView去创建新的单个产品样式传参onEdit是上面提及的OpenProductEditor修改产品信息的函数体

!Pasted image 20240322125414.png

产品的界面类对应的具体逻辑弄一个编辑相关的edit按钮、一个删除的delete按钮然后再加上ProductDetailView 产品细节界面类

!Pasted image 20240322125534.png

对应表现

!Pasted image 20240322125835.png

产品细节类对应的逻辑描述的label文本显示的是传参过来的产品Description字段信息 再显示一个功能的label文本显示

!Pasted image 20240322125941.png

弄一个添加Feature功能的按钮再弄一个功能列表的初始化

!Pasted image 20240322131005.png

!Pasted image 20240322130938.png

对应表现

!Pasted image 20240322131034.png

功能特性列表是在OnRefresh刷新函数Foreach遍历调用FeatureView 单个产品功能类,完成创建

!Pasted image 20240322131109.png

单个产品功能类对应的具体逻辑用一个树节点mTreeNode串联起来add添加功能函数删除函数还有mChildrensParent子功能布局 点击添加功能,是调用 OpenFeatureEditor 产品功能编辑子界面;

!Pasted image 20240322131225.png

产品功能编辑,对应的具体逻辑,显示的是功能名,描述

!Pasted image 20240322131556.png

而且这里的,添加产品特性功能,是属于加到,当前产品功能的,子功能特性; 所以点击保存按钮的时候实例化新的Feature类后是加到mFeature.Children 子功能容器中再Save保存

!Pasted image 20240322131654.png

产品界面类的刷新函数是遍历子节点容器配合IndentValue缩进显示出来即可

!Pasted image 20240322131832.png

对应表现

!Pasted image 20240322131912.png

产品功能特性 子窗体的 整体表现:

!Pasted image 20240322131952.png

以上,就是产品特性功能,相关的逻辑和表现,回到 产品细节界面类,开始解析,版本相关的逻辑; 显示一个版本的label文本然后弄一个创建版本的按钮调用的是 OpenVersionEditor 编辑接口,而 mProductVersionsParent 跟产品列表一样,是版本列表的初始化;

!Pasted image 20240322132701.png

!Pasted image 20240322132452.png

对应表现

!Pasted image 20240322132857.png

打开版本编辑相关的 OpenVersionEditor 函数,也是通过 CreateSubWindow创建一个子窗口配合传参是否为空三元运算符显示子窗体标题 还会弄一个版本界面类 VersionView加到子窗体 然后,版本的状态,是用了待办事项的 TodoState有三种状态用EnumPopupView 枚举界面类,统一控制即可; 再显示版本名信息;

!Pasted image 20240322133330.png

!Pasted image 20240322133059.png

版本编辑子窗体,后面的逻辑,就是保存的逻辑了,如果是新增,存到对应的数据容器即可; 如果是修改就修改传参过来的productVersion对应的字段值即可

!Pasted image 20240322144443.png

版本信息的界面类VersionView主要是字符显示样式的相关逻辑 复习一下,版本 是由三个字段 构成,分别对应界面类的 mMagorView 、mMiddleView、mSmallView 然后,就是各种字符串搭配,和样式处理;

!Pasted image 20240322133529.png

!Pasted image 20240321174043.png

也会显示版本号信息通过AddTo串联起来即可

!Pasted image 20240322133801.png

版本编辑子窗体面板,表现

!Pasted image 20240322133851.png

继续在刷新函数和产品特性功能同理也是排序、遍历产品的Product.Versions集合通过实例化 ProductVersionView 单一产品版本界面类,创建每一版本即可

!Pasted image 20240322134010.png

这是 ProductVersionView 的具体逻辑,跟待办事项 TodoListInputView 相关逻辑关联起来实例化一个inputView 待办事项输入框

!Pasted image 20240322134232.png

按钮的样式设置; 把inputView跟 edit 编辑按钮,关联起来;

!Pasted image 20240322143628.png

通过版本的,各个状态,控制样式的显示隐藏; 刷新函数,会遍历对应版本的 待办事项列表容器,创建 单个 待办事项即可;

!Pasted image 20240322144012.png

对应表现

!Pasted image 20240322144709.png