Unity c#更改材质的不透明度

Unity c#更改材质的不透明度,c#,unity3d,opacity,C#,Unity3d,Opacity,我有一些代码,其中我通过如下代码生成两个自定义材质: var m = new Material(Shader.Find("Unlit/Transparent")); m.SetTexture("_MainTex", (Texture)Resources.Load("data/"+Path.GetFileNameWithoutExtension("data/"+DatabaseData.local_photo_name))); 我生成的其他材质如下所示: var c = new Color(25

我有一些代码,其中我通过如下代码生成两个自定义材质:

var m = new Material(Shader.Find("Unlit/Transparent"));
m.SetTexture("_MainTex", (Texture)Resources.Load("data/"+Path.GetFileNameWithoutExtension("data/"+DatabaseData.local_photo_name)));
我生成的其他材质如下所示:

var c = new Color(255, 0, 255, 1); //just an example color... 
var m = new Material(Shader.Find("Unlit/Color"));
m.SetColor("_Color", c);
不,我想在运行时更改这些材质的不透明度。(同时,材质已应用于生成的游戏对象的MeshRenderer组件)

我试着用以下方法来做这件事:

var RRenderer = InteractRecord.GetComponent<MeshRenderer>();
RRenderer.material.color = new Color(RRenderer.material.color.r, RRenderer.material.color.g, RRenderer.material.color.b, o);
var rrender=InteractRecord.GetComponent();
rrender.material.color=新颜色(rrender.material.color.r,rrender.material.color.g,rrender.material.color.b,o);
但当我这样做时,我会得到以下错误:

材质没有颜色属性“\u color” UnityEngine.Material:获取颜色() DBRecord:SetRecordOpacity(单一,布尔)(位于Assets/scripts/DBRecord.cs:118) Main:Update()(位于Assets/scripts/Main.cs:66)

我该怎么做呢?我现在做错了什么


如果有任何不清楚的地方,请告诉我,以便我可以澄清

经过长时间的搜索和尝试,我发现了问题所在

我正在创建具有以下纹理类型的材质:

不发光/透明

尽管名称甚至暗示它支持透明度,但仅当您使用具有透明度的
.img
文件时,它才支持透明度。如果要更改整个对象的不透明度,则此选项无效

未照明/彩色

这个纹理类型也有同样的问题,因为它的颜色属性有一个不透明度值,它不会影响整个网格

因此,我在unity中检查所有当前着色器,所有这些着色器都不支持更改“网格”/“材质”的整体不透明度

因此,你可能会问如何做到这一点。在unity中使用旧着色器的以下着色器:
shader.Find(“旧着色器/透明/漫反射”)
或透明类别中的任何其他着色器


希望这对任何人都有帮助

所以当你使用material.color时,你会得到这个错误?是的,因为当我调用更新它的函数时,我会得到这个错误,但当你调用
m.SetColor(“\u color”,c)”时,我不会得到这个错误你能告诉我们全部错误吗?是的,我会更新问题