前缀树红点_第四章
ReddotTreeView函数接口,继承自TreeView,是红点树界面的相关逻辑,声明了对应ReddotTreeViewItem类型的m_Root根节点,还有m_Id的int整型数据,后续会用来递增,作为编辑器红点树的节点,唯一id
Repaint重绘函数,调用的是,父类TreeView,自身的重绘逻辑
红点树,对应的构造函数,也是调用了,自身的Reload重载函数接口,会重新加载,红点树的data数据; 然后,再把红点管理器 ReddotMananger 的 NodeNumChangeCallback 和 NodeValueChangeCallback 两个Action回调函数,绑定了红点的 Reload 和 Repaint 逻辑;
PreOrder函数接口,是用于节点的预加载,其中每创建一个,新的ReddotTreeViewItem红点实体,就会让 m_Id 自增一次; 完成,树节点TreeNode数据类型的,传参root构建后,如果 ChildrenCount 子节点,总数大于0,也会foreach遍历,子节点,再递归调用,自身PreOrder函数接口,继续创建新的 ReddotTreeViewItem 编辑器 红点节点;
OnDestory函数接口,就是解绑,俩函数回调即可
BuildRoot函数接口,就是把红点管理器,对应的Root根节点,作为传参,进行预加载,然后设置depth深度为-1,再调用内置的SetupDepthsFromParentsAndChildren函数接口,完成树状各节点,和对应子节点的深度关系设置,参考SetupDepthsFromParentsAndChildren
编辑器,对应实际游戏的,红点关系窗体,声明了红点树ReddotTreeView数据类型的m_TreeView变量,还有搜索区域SearchField数据类型,对应的m_SearchField变量; 编辑器入口,是"Window/红点树视图窗口",通过 isPlaying 的布尔判断,需要运行游戏,实例化出,红点前缀树,才能打开该编辑器窗体;
OnEnable 使能函数接口,完成 红点树的 ReddotTreeView 初始化构建,然后再完成,搜索框 SearchField 的逻辑构建,用来检索 节点; 而OnPlayModeStateChange函数接口,是绑定了,编辑器的状态变更 EditorApplication.playModeStateChanged,其他mode模式,都不进行操作,只有 ExitingPlayMode 退出运行模式的时候,就会调用Close函数,关闭窗体即可; 因为 红点树 编辑器面板,是依赖于,运行时的,生成实际红点树,所以退出运行模式,自然关闭, 红点树 编辑器面板 窗体;
OnDestroy函数接口,就是解绑即可
编辑器的GUI更新,包含几个函数,分别是,m_SearchField搜索框的,OnGUI刷新,还有红点树 m_TreeView 的OnGUI刷新,底部有俩Button按钮,分别对应 ExpandAll 和 CollapseAll → 展开、收缩 红点树
在OnGUI刷新函数,调用它们即可
运行游戏后,点击新增,各个红点,然后,编辑器页面入口,点击打开
各UI:搜索框、红点树、展开/收缩按钮,显示正常
搜索逻辑,正常
退出运行,触发ExitingPlayMode,窗体自动关闭,逻辑表现正常