先整一个,创建ui窗体的小工具 根目录创建一个文件夹
![[Pasted image 20230603200746.png]]
只有编辑器类,所以创建多一个文件夹
![[Pasted image 20230603200845.png]]
整一个工具类脚本
![[Pasted image 20230603200935.png]]
需要用到的命名空间,还有类的继承
![[Pasted image 20230603201319.png]]
整一个编辑器入口
![[Pasted image 20230603201430.png]]
回到unity编辑器,入口就有了
![[Pasted image 20230603201540.png]]
然后,加一个判断是否要显示接口的函数 如果场景已有UIRoot这个实体,就不显示这个接口
![[Pasted image 20230603201839.png]]
声明俩浮点数变量,再整一个初始化窗体的方法函数体
![[Pasted image 20230603202127.png]]
然后,ongui是窗体刷新的方法,弄一个水平布局,然后显示也是宽度和高度
如果点击按钮,就把宽度和高度的字符转成浮点数,传到初始化函数体
并且关闭窗体
![[Pasted image 20230603202335.png]]
加一个ui相关的脚本
![[Pasted image 20230603202612.png]]
用到的命名空间,继承父类 ui一般都会有分级,这里分了几个Transform
然后,还有一个序列化的Canva画布
![[Pasted image 20230603203534.png]]
完善初始化ui的逻辑方法体 新建一个UIRoot的实体,layer层也设置一下,添加一下UIRoot脚本
再添加一个Canvas画布,设置一下父节点关系,再修改一下Canvas各项属性
画布的尺寸就是传参
![[Pasted image 20230603203706.png]]
继续,设置一下Layer层级 再添加一下事件系统
![[Pasted image 20230603204236.png]]
回到unity引擎,先点击,测试一下功能
![[Pasted image 20230603204327.png]]
![[Pasted image 20230603204344.png]]
可以发现,创建是正常的,但是本来应该挂上UIRoot脚本,却空空如也
![[Pasted image 20230603204548.png]]
根据log可知,如果是monobehavior之类的,要挂载的脚本,是不能放到Editor文件夹的,Editor文件夹内,存放的都是编辑器相关,而MonoBehavior是游戏运行相关
![[Pasted image 20230603204635.png]]
拖曳,修改脚本路径
![[Pasted image 20230603204813.png]]
场景中,先删掉uiroot,因为之前脚本是有判断
![[Pasted image 20230603204852.png]]
不可点击
![[Pasted image 20230603204926.png]]
![[Pasted image 20230603204948.png]]
删掉之后,重新生成 可以看到,脚本是正常挂上去了
![[Pasted image 20230603205030.png]]
子节点,canvas相关属性和参数也是正确赋值的
![[Pasted image 20230603205402.png]]
继续完善逻辑关系,创建几个子节点,添加相关属性,然后赋值,再将脚本序列化,然后取得上面的序列化属性,也就是canvas画布,对它进行赋值,赋值是前面创建出来的canvas画布
然后,保存修改就好
![[Pasted image 20230603205753.png]]
循例,删除,重新创建,序列化之后,数据也是正常的
![[Pasted image 20230603210004.png]]
然后,是制作预制体; 先判断文件夹是否存在,如果文件夹不存在,就先创建文件夹; 设置好文件的保存路径,然后调用api保存就好
![[Pasted image 20230603210054.png]]
删除,重新生成 可以看到,颜色变了,而且在对应的文件夹下,确实有这个文件了
![[Pasted image 20230603210336.png]]
加一个编辑器扩展相关的命名空间
![[Pasted image 20230603210607.png]]
整个类都挪进来
![[Pasted image 20230603210634.png]]