如果获得挂载在编辑器里的文件名?


如图所示,我想获得用代码在程序运行后获得箭头处这个材质的文件名(即body6001001)?试了很多方法如node.getComponent(SkinnedMeshRenderer).getMaterial(0).name,name都是为空

获得了又能怎样? 打包的时候还会被混淆,导致你用到的名字不是原始名字

我想实现的最终需求就是代码动态替换6开头的材质

我想实现的最终需求就是代码动态替换6开头的材质

建议你打消这个念头…

name 这个字段数据为空是引擎的BUG,等待修复吧。

给你个思路,很绕,但大概率是可行的。1、获得这个资源的uuid,2、根据这个uuid去查找name2uuid的对应表。这个表肯定是存在的,但因为我没实操弄过,所以说不上来在哪。

这其实可以通过设计解决这个问题,写个MaterialsManager进行管理,比如说动态加载所有material,管理好每个material是啥,然后根据需求设置到materials字段上不就可以了么,不想重复设置在设置时候对比一下uuid啥的,总结来说,虽然我不知道你之前上面有些啥,但是我可以用我知道的东西替换你身上的东西,如果你身上的东西uuid和我设置的一样,我就认为你已经变成我想要的模样了

给你个方案,插件。如果你是想在编辑器中改,插件直接完成就行,如果你是想在运行时动态改,那你可以用插件生成映射文件,然后读这个文件

用uuid