使具有相同着色器的多个对象在不同时间淡化

Making multiple objects with the same shader fade at different times

我对我的一个游戏对象进行了死亡转换,它从一个球体变成了一堆小的独立块。这些块中的每一个我都想在不同的时间淡出,但由于它们都使用相同的着色器,我似乎无法弄清楚如何让它们不同时淡出。

第一张图片是球形球的第一步,当它从球形球变成 Minecraft 风格的方块球时,它的右边是构成 Minecraft 风格的方块之一红色箭头所示的球。

现在这是我的检查员,负责组成 Minecraft 外观球的小块之一。

我有一个箭头指向使对象褪色的原因,但它在所有块中都是全局的,因为它们使用相同的着色器。是否可以让每个块分别淡出,或者我卡住了,需要为小块家伙找到一个新的消失行为?

需要在运行时通过脚本修改material属性,需要通过Renderer.material属性来完成。当您访问 Renderer.material 时,Unity 会自动为您创建单独处理的 material 的副本——如果您关心性能,则包括获得自己的绘制调用。您可以看出发生了这种情况,因为渲染器中的 material 名称将更改为 "Materialname (Instance)".

使用 Renderer.material.SetFloat()(或任何合适的 Set... 函数)设置 material 的淡入淡出 属性。不幸的是 属性 的名字不是 "Fade Factor"。您可以通过查看着色器脚本找到 属性 的名称,或者将检查器切换到调试模式并在保存的属性数组中挖掘看起来正确的名称。