标题说明了一切,我在网上查找了多种解决方案。 我正在为我的 UI 多次实例化一个预制件,我正在尝试设置这个预制件图像组件的子级材料颜色(多么一连串的词),它导致它们都与最后一个实例化的颜色相同(我相信整个材料颜色都在改变)。
我本来试过
hair.material.SetColor("_HairColour", hairColour);
并期待单独实例化的预制件改变颜色,而不是每个使用这种材料的预制件。
我使用 SpriteRenderer 对我的实际游戏对象使用几乎完全相同的代码。它似乎与 Image 组件有关..
我试过像这样从材质和着色器中强行制作材质的克隆,它确实制作了(克隆),但在两种情况下它的行为仍然相同......
GetComponent<Image>().material = Instantiate(GetComponent<Image>().material);
Material instance = new Material(shader); instance.CopyPropertiesFromMaterial(material); GetComponent<Image>().material = Instantiate(instance);
我什至在脚本中为对象添加了(临时)公共颜色,并将其分配给与应该在材质中设置的颜色相同的颜色,并且每个对象都有自己不同的颜色,只是材质始终是最后一种颜色...
我在这里不知所措,所以任何帮助将不胜感激!