今天下午写了一个批量更换材质的编辑器窗口

博主分享了一次使用Unity编写批量更换材质编辑器窗口的经验,以解决替换大量预设贴图的繁琐工作。在编写过程中遇到了assetsdata.loadAsset方法的路径问题、loadAllAssetsAtPath方法的理解误区以及在Editor脚本中使用sharedMaterial的注意事项,并提到对于场景中预设的apply操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

共享一下,有时间会加注释的

起因是这样的,有大概100多个预设,我买的一个场景模型包

但是我不喜欢它的贴图,就自己做了另一套

如果是挨个换材质的话,我肯定会疯掉的啊

就琢磨还是写个编辑器算了

其实,编辑器也没有省时间,一个多小时,边写边测试

其实有这个事件,早就全替换完了

但结果虽然一样,但过程里面有收获啊~~



期间遇到的问题:

1.assetsdata的loadasset方法很操蛋,路径名称不能是全路径,需要相对路径,用doc的话来说就是project路径下的文件位置

这个折磨了我好久,google一下才明白的

2.还是loadallassetsatpath,这个方法的作用和名字严重不一致,一点都不信达雅,并不是读取路径下的所有资源,而是读取一个资源的所有相关资源(fbx模型的话,就是材质,贴图,动画一起读)

3.在editor脚本里面,不要直接访问material,而是sharedMaterial,因为是非运行状态,没有办法缓存新的材质instance

4.如果想要将场景中的预设,通过代码apply的话,就执行这个....这个方法词不达意啊,居然是替换掉....orz

PrefabUtility.ReplacePrefab( go, PrefabUtility.GetPrefabParent( go ), ReplacePrefabOptions.ConnectToPrefab );


using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using System.IO;

public class ExchangeMaterial : Ed
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值