用鼠标单击对象会更改所单击对象的颜色
当您再次选择它时,我会将单击对象的颜色设置为白色,并将其恢复为原来的白色。
简单(更改选定对象的颜色)
Material mat = objectManager.ReturnMat(obj);
mat.color=color.white
最初,如果为每个对象创建了uv贴图,则即使重复更改mat.color也不会出现问题。
这一次,单独使用没有uv贴图的对象,因此如果应用mat.color,则原始颜色为
例如,在uv贴图中,指定的颜色是使用uv绘制的,因此这并不奇怪,因为即使更改了颜色,它也会被覆盖。
没有uv贴图的对象会更改颜色,因此原始颜色会被吹走。
我不太了解着色器或纹理材质
我问你一个问题。
有没有一种方法可以通过这些改变颜色而不丢失对象的原始颜色?
我不知道可以点击多少个对象,但如果你保存每次点击的材料,你可以输入大约一个。
发射的颜色自然不是重叠的原始颜色
发布于 2020-08-11 11:37:26
以下@4RZG4答案:
如果这是一个性能问题,您可以创建一个颜色的Dictionary<int, Color>
,每次更改对象的Color
时,使用相应的GameObject
ID将其保存在列表中。
当GameObject
使用保存的Color
时,将其从字典中删除。这样,您将只有当前更改的颜色的引用,而不是可能更改的每个颜色的引用。
发布于 2020-08-11 10:07:37
你的帖子有点不清楚,我也不太明白你想要什么,但我假设你想要在将对象的颜色更改为其他颜色后保持原来的颜色。
实现它相当简单;只需将材料保存在Start
函数中,如下所示:
void Start()
{
Material Temp = mat;
}
现在,原始材质存储在名为Temp
的变量中。
如果您希望将mat
恢复为其原始值,您可以这样做:
mat = temp;
https://stackoverflow.com/questions/63354214
复制