我不想要实例材料,而是需要资产中的原始材料

时间:2015-03-04 14:21:05

标签: unity3d instance

我制作了一个脚本,将所有材料从游戏对象复制到另一个。它是一个在编辑器中运行以按下按钮的脚本。

TargetComponents[j].gameObject.transform.GetComponent<Renderer>().material=ComponentsToAdd[i].gameObject.transform.GetComponent<Renderer>().materials;

是一个Unity 5脚本,但在统一4中是相同的,它没什么区别,比如:

TargetComponents[j].gameObject.transform.render.materials=ComponentsToAdd[i].gameObject.transform.render.materials;

可以使用,但我复制的材料不一样,但实例。 我想知道如何告诉他不要创建实例,而是在资产中使用原始材料。

有可能吗?

1 个答案:

答案 0 :(得分:1)

Unity提供了两种获取渲染器材质的方法:

sharedMaterial属性将返回原始素材资源。这就是你想要的,这里。

material属性将在内部复制共享材料,将其分配给渲染器,然后返回新副本。这通常是“安全”的事情,特别是对于那些可能不了解这种区别的经验不足的开发人员,但它几乎从来都不是编辑器脚本的正确举措。

渲染器还会公开materialssharedMaterials数组,以防您在一个对象上有多个材质。

您可能已经知道这一点,但要小心编辑共享材料,因为它在所有渲染器和引用该材质的资产之间共享。