我正在使用Unity,而我的旧模型(带有纹理/材质的简单多维数据集)正在使用我的眨眼代码。 (网格被击中,它“闪烁”)。现在,我有一个搅拌机的朋友制作了新型号,并调整了眨眼代码以获取正确的材料并使它们眨眼。但是代码并没有出错,但是它什么也没做。
这很简单(所以我想)我正在尝试做的事情却无济于事。
MeshRenderer myRend;
void Start () {
#store reference for later
myRend = gameObject.GetComponent<MeshRenderer> ();
}
...稍后发生碰撞:
myRend.materials[1] = null; //or use another material still shows original material name down below
Debug.Log("Mat change: " + myRend.materials[1].name);
它仍然显示原始名称不是null吗?因此我的其余代码几乎无法正常工作: (闪烁材料只是白色材料) (我也知道我为材料选择了正确的索引)
IEnumerator CollideFlash()
{
case 2:
myRend.materials[1] = blinkMaterial;
Debug.Log("Mat change: " + myRend.materials[1].name);
myRend.materials[1].color = Color.white;
yield return new WaitForSeconds(0.1f);
//change it back from white to this
myRend.materials[1] = m;
myRend.materials[1].color = c;
break;
... ... ..
我知道上面的代码执行了,但是似乎没有什么改变。
答案 0 :(得分:2)
第一个材料是materials [0]而不是material [1],如果存在material [1](并且我认为一定是因为您没有得到空指针错误),它可能不是您的主要材料在更改MeshRenderer上的材质时看到。
您也可以尝试通过meshRenderer.shaderdMaterial访问它。
还请注意,将颜色修改器乘以反照率纹理,因此,如果您使用的是纹理,则将颜色设置为白色不会改变任何内容-仍然相同的纹理(乘以黑色)会使颜色变暗。纹理