在写编辑器的时候可能会有一种按钮带图片,并且点击时可以在指定文件夹下选择图片,还有有一个选择框,可以在你的项目中选择所有是这个类型的物体
一、首先是按钮选择图片
最终效果
![](https://i-blog.csdnimg.cn/blog_migrate/18568841963435558e30753f432639bc.png)
下面是实际操作代码
![](https://i-blog.csdnimg.cn/blog_migrate/6b55be7155d260340dbffd3789b883bc.png)
判断是按下按钮之后进行的操作
首先第一步打开这个路径的文件夹并返回这个路径,我们用一个strin变量接收一下,
a字符串数组是根据斜杠进行分割,分割出来之后为每层路径的名字,切出来之后那个放图片的文件夹为最后一个
b字符串数组是在a字符串数组的最后一层路径进行分割,这时候也就是获取到了图片的名字并且和后缀进行分割,b[0]为图片名字,b[1]为图片后缀
最后给这个Texture去进行加载,最终效果就实现了
第二个效果如下
![](https://i-blog.csdnimg.cn/blog_migrate/8eb73e47d95d339e67c1509f562ae11f.png)
就是上图动作那一行点击后面的小圈会根据你要选的类型展示所有当前类型的资源
下面是实际操作代码
![](https://i-blog.csdnimg.cn/blog_migrate/039447136d286b7b736dc8acedd306f2.png)
如果在打出来这行代码之后显示是弃用的,就把鼠标放到ObjectField上同时摁下Alt+Enter直接选择弹出的第一选项添加[System.Obsolete],如果你想选的是其他类型就把后面第二个参数改成你想要的类型,前面同样记得强制转换
二、在引入json类库的时候会遇到的问题
我们在写编辑器时可能会要求根据当前的编辑器配置文件,那这个时候需要去生成json文件,就要引入json类库了,但是编辑器是特殊文件夹如果直接拉类库进来一般是访问不到的,没有办法引入命名空间,有可能是版本问题,我的unity是2020的,vs是2019的,当然有解决办法,我们需要生成json文件时,在Editor下并且继承了EditorWindow的脚本引入一个vs自己的json类库:using Unity.Plastic.Newtonsoft.Json;
这个问题就解决了