class in UnityEngine 描述 要应用的材质值代码块。 MaterialPropertyBlock 由Graphics.DrawMesh和Renderer.SetPropertyBlock使用。在 希望绘制具有相同材质,但属性 略有不同的多个对象时可使用它。例如,如果 要稍微更改绘制的每个网格的颜色。不支持更改渲染状态。
首先代码如下,其次,需要把模型shader,设置为可实例化shader,shader中加入代码 #pragma multi_compile_instancing MaterialPropertyBlockpropertyBlock;publicMeshRenderer[]arr_mesh;voidAwake(){if(propertyBlock==null)propertyBlock=newMaterialPropertyBlock();}voidOnEnable(){for(inti=0;i<arr_mesh.Length;i++)//...
3.修改一下脚本 1usingSystem.Collections.Generic;2usingUnityEngine;34publicclassNewBehaviourScript : MonoBehaviour5{6publicList<MeshRenderer>list;78voidStart()9{10MaterialPropertyBlock materialPropertyBlock =newMaterialPropertyBlock();11for(inti =0; i < list.Count; i++)12{13materialPropertyBlock.SetCo...
Unity中访问Renderer的material属性会给你额外创建一个材质实例,这样会增加一次渲染影响性能,但是有时又需要单独修改一个材质的参数,这种情况就可以使用Renderer的SetPropertyBlock。 MaterialPropertyBlock matPropertyBlock =newMaterialPropertyBlock(); meshRenderer.GetPropertyBlock(matPropertyBlock); matPropertyBlock.SetFlo...
var materialProperty : MaterialPropertyBlock = new MaterialPropertyBlock(); // Construct a rotation matrix and set it for the shader var rot : Quaternion = Quaternion.Euler (0, 0, Time.time * rotateSpeed); var mtrx : Matrix4x4 = Matrix4x4.TRS (Vector3.zero, rot, Vector3(1,1,1) );...
publicMeshRenderer rd;// Start is called before the first frame updatevoidStart(){MaterialPropertyBlock prop=newMaterialPropertyBlock();rd.GetPropertyBlock(prop);//设置UV偏移 ,Vector(Tilling.X,Tilling.Y,Offset.X,Offset.Y);prop.SetVector("_MainTex_ST",newVector4(1,1,0.110f,-0.125f));rd....
MaterialPropertyBlock 由Graphics.DrawMesh和Renderer.SetPropertyBlock使用。在 希望绘制具有相同材质,但属性 略有不同的多个对象时可使用它。例如,如果 要稍微更改绘制的每个网格的颜色。不支持更改渲染状态。 Unity 的地形引擎使用 MaterialPropertyBlock 绘制树;它们全都使用 相同材质,但是每棵树具有不同的颜色、缩放和...
MaterialPropertyBlock.SetFloatArraypublic void SetFloatArray (string name, float[] values); public void SetFloatArray (int nameID, float[] values); public void SetFloatArray (string name, List<float> values); public void SetFloatArray (int nameID, List<float> values); ...
首先介绍MaterialPropertyBlock如何使用 1.首先需要修改原来的Shader代码 修改Shader 注释掉原来的 half4_BaseColor替换成UNITY_DEFINE_INSTANCED_PROP(float4, _BaseColor)(截图中用了float4就手误了^_^),如果有需要多条属性则同样替换增加就可以了 使用的时候用UNITY_ACCESS_INSTANCED_PROP(Props, _BaseColor)代替...
UnityEditor.Profiling.Memory OtherMaterialPropertyBlock.SetTexturepublic void SetTexture (string name, Texture value); public void SetTexture (int nameID, Texture value); 参数 name 属性的名称。 nameID 通过Shader.PropertyToID 检索的属性的名称 ID。 value 要设置的 Texture。 描述 设置纹理属性。