快捷键设置 ![[Pasted image 20240319165535.png]] 表现 ![[Pasted image 20240319165602.png]] 一键重启项目,也是调用编辑器内部接口即可; EditorApplication.OpenProject ![[Pasted image 20240319170304.png]] 入口 ![[Pasted image 20240319170348.png]] 重启项目,或者每次打开项目,都会有这个打印 ![[Pasted image 20240319170507.png]] 也是因为脚本,之前加了DidReloadScripts标签的,每次编译完,都会调用,这个函数回调,无影响; ![[Pasted image 20240319170540.png]] 使用编辑器ui,实现复杂系统 ![[Pasted image 20240319170815.png]] 入口和最终表现 ![[Pasted image 20240321105245.png]] ![[Pasted image 20240321105306.png]] 这是入口的逻辑 ![[Pasted image 20240319171719.png]] 入口 ![[Pasted image 20240319172056.png]] 父类接口,继承自编辑器窗体EditorWindow和 IDisposable,资源释放相关; 参考[[IDisposable模式用法详解]] ![[Pasted image 20240319172136.png]] 打开窗体Open函数,如果没有打开窗体,就调用初始化,然后Show显示出来; 如果已经打开,就调用Dispose释放资源,关闭窗体即可 ![[Pasted image 20240319172617.png]] 这是框架,界面显示的基类接口IView,也是继承自IDisposable,自己控制资源释放相关; 以下是包含的各函数接口 ![[Pasted image 20240319173056.png]] ![[Pasted image 20240319173159.png]] 这是layout布局的,总接口,继承自IView; 有添加、移除各个子物体的函数接口 ![[Pasted image 20240319173232.png]] 回到窗体基函数,有一个Action委托队列mCommands,还有一个PushCommand函数,是塞Action到队列里 ![[Pasted image 20240319173524.png]] 新增一个额外的静态工具类,是用来调用,添加Action的 ![[Pasted image 20240320104629.png]] 添加一个事件系统EventDispatcher,通过字典mRegisteredEvents存储Action事件,通过Register方法,把key强转int32,添加到事件字典 ![[Pasted image 20240320104853.png]] 移除事件,有两种形式,一种只是移除,事件队列里面,某个单一事件; 另一种,是移除全部事件; ![[Pasted image 20240320105234.png]] Send触发事件 ![[Pasted image 20240320105316.png]] View界面类,继承自多IView界面基类; 创建一个抽象类EventRecord,是作为一个界面的事件容器,记录,包含Key和Action,队列mEventRecords是该事件容器的队列; RegisterEvent方法,是将事件添加到,事件系统,统一管理,再添加到界面类对应的,队列容器,进行存储 ![[Pasted image 20240320105534.png]] UnRegisterAll是取消注册全部的函数,SendEvent发送触发事件函数,暂时没使用到,因为事件系统EventDispatcher本身自带一个Send触发事件函数,还有各种样式; ![[Pasted image 20240320114112.png]] 帧更新函数RefreshNextFrame会调用,PushCommand方法,去添加,AddLayoutOption是添加布局样式相关 ![[Pasted image 20240320114309.png]] 渲染前的处理,是样式的赋值 ![[Pasted image 20240320115309.png]] 渲染,调用渲染前的函数,然后设置一下颜色,调用OnGUI即可 ![[Pasted image 20240320115330.png]] ![[Pasted image 20240320115407.png]] 父类布局,还有从父类布局中,移除的相关逻辑 ![[Pasted image 20240320115445.png]] 调用的是这个 ![[Pasted image 20240320115556.png]] 创建一个布局额外工具类,包含的静态工具函数,是往父类布局,添加界面 ![[Pasted image 20240320115611.png]] 自定义资源释放 ![[Pasted image 20240320115655.png]] Layout布局,是继承自View和ILayout布局基类的,有弄一个Children列表容器,存放IView界面; 添加子物体,也是配合该容器,进行即可; 设置一下,子物体的布局父类,是自身; ![[Pasted image 20240320115919.png]] 移除子物体的逻辑,就是移除布局,然后调用子物体的Dispose释放资源函数; 重写的更新函数,也是Foreach遍历调用,子物体,然后调用它们的Refresh函数即可; ![[Pasted image 20240320120118.png]] 布局的OnGUI渲染,有前后两个函数处理,中间包裹着,调用子物体的DrawGUI绘制函数 ![[Pasted image 20240320120425.png]]