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

3.5 KiB
Raw Blame History

先整一个创建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