使用相同着色器制作多个对象在不同时间淡出

时间:2016-03-29 21:38:00

标签: unity3d shader mesh

我的一个GameObjects有一个死亡转换,它从一个球形球变成一堆小块。我想在不同时间淡化这些块中的每一个,但由于它们都使用相同的着色器,我似乎无法弄清楚如何使它们不会同时淡出。

第一张照片是球形球的第一步,当它从一个球形球转向一个Minecraft' ish看块球时,它的右边是组成Minecraft的一个块#39 ;看着红色箭头所示的球。 enter image description here

现在这是我的Inspector,用于构成Minecraft' ish look ball的小块之一。 enter image description here

我有一个箭头指向使对象褪色的原因,但由于它们使用相同的着色器,因此它在所有块中都是全局的。是否有可能让每个区块单独褪色或者我被卡住并需要找到一个新的消失行为的小块人?

1 个答案:

答案 0 :(得分:3)

您需要在运行时通过脚本修改材质属性,并且需要通过Renderer.material属性进行修改。当您访问Renderer.material时,Unity会自动为您创建一份单独处理的材料副本 - 包括获取自己的绘制调用,如果您关心性能。您可以知道这已经发生,因为渲染器中的材质名称将更改为"材质名称(实例)"。

使用Renderer.material.SetFloat()(或任何适当的Set...函数)设置素材的淡入淡出属性。不幸的是,该物业的名称并不是“退色因素”#34;。您可以通过查看着色器脚本,或者将检查器切换到调试模式并通过Saved Properties数组挖掘看起来正确的属性来找到属性的名称。