Unity编辑器扩展精粹_第一章
先整一个,创建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保存就好
删除,重新生成 可以看到,颜色变了,而且在对应的文件夹下,确实有这个文件了
加一个编辑器扩展相关的命名空间
整个类都挪进来