这也是踩坑的一个过程,但是到现在还有一个问题没有解决,希望能够解决。
或者说有其他的更好的控制材质参数的属性。
我的目的是实现一个水管的水流效果,水流要有方向。
首先呢,通常我们获取一个对象的材质信息使用如下方法:
Object.GetComponent<MeshRenderer>().sharedMaterial
给对象更改材质可以用:
Object.GetComponent<MeshRenderer>().sharedMaterial = 新材质;
更改对象材质的偏移使用:
Object.GetComponent<Renderer>().sharedMaterial.mainTextureOffset = new Vector2(x, y);
另一种方法也可以实现,例如:
Object.GetComponent<Renderer>().material.mainTextureOffset = new Vector2(x, y);
但是这种方法每次更改属性会新建一份内存,最后导致崩溃,除非使用单例模式,但是还是会增加更多的内存占用。
但是使用sharedMaterial更改参数,但是在动态更改材质的过程中,如果多个对象使用同一个材质并需要不同的属性的时候,均会以最后的属性为准,所以无法更改向量的方向。这是一个问题
当然会有后续了,使用shardMaterial更改参数,将材质分开,静态一个材质,动态方向1一个材质,动态方向2一个材质,加偏移量判断到达一定偏移量置零重新开始。这样一直更改这三个材质的参数即可达到要求。