先整一个,创建ui窗体的小工具 根目录创建一个文件夹

只有编辑器类,所以创建多一个文件夹

整一个工具类脚本

需要用到的命名空间,还有类的继承

整一个编辑器入口

回到unity编辑器,入口就有了

然后,加一个判断是否要显示接口的函数 如果场景已有UIRoot这个实体,就不显示这个接口

声明俩浮点数变量,再整一个初始化窗体的方法函数体

然后,ongui是窗体刷新的方法,弄一个水平布局,然后显示也是宽度和高度

如果点击按钮,就把宽度和高度的字符转成浮点数,传到初始化函数体

并且关闭窗体

加一个ui相关的脚本

用到的命名空间,继承父类 ui一般都会有分级,这里分了几个Transform

然后,还有一个序列化的Canva画布

完善初始化ui的逻辑方法体 新建一个UIRoot的实体,layer层也设置一下,添加一下UIRoot脚本

再添加一个Canvas画布,设置一下父节点关系,再修改一下Canvas各项属性

画布的尺寸就是传参

继续,设置一下Layer层级 再添加一下事件系统

回到unity引擎,先点击,测试一下功能

可以发现,创建是正常的,但是本来应该挂上UIRoot脚本,却空空如也

根据log可知,如果是monobehavior之类的,要挂载的脚本,是不能放到Editor文件夹的,Editor文件夹内,存放的都是编辑器相关,而MonoBehavior是游戏运行相关

拖曳,修改脚本路径

场景中,先删掉uiroot,因为之前脚本是有判断

不可点击

删掉之后,重新生成 可以看到,脚本是正常挂上去了

子节点,canvas相关属性和参数也是正确赋值的

继续完善逻辑关系,创建几个子节点,添加相关属性,然后赋值,再将脚本序列化,然后取得上面的序列化属性,也就是canvas画布,对它进行赋值,赋值是前面创建出来的canvas画布

然后,保存修改就好

循例,删除,重新创建,序列化之后,数据也是正常的

然后,是制作预制体; 先判断文件夹是否存在,如果文件夹不存在,就先创建文件夹; 设置好文件的保存路径,然后调用api保存就好

删除,重新生成 可以看到,颜色变了,而且在对应的文件夹下,确实有这个文件了

加一个编辑器扩展相关的命名空间

整个类都挪进来