MaterialPropertyBlock
全部标签一、不使用MaterialPropertyBlock效果每更改一次颜色会重新实例化一份材质、不能进行动态合批,当物体比较多时Drawcall会比较高 usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassMaterialTest:MonoBehaviour{publicListlist;//StartiscalledbeforethefirstframeupdatevoidStart(){for(inti=0;i 二、使用MaterialPropertyBlock效果更改颜色不
一、materials与sharedMaterials1.1使用上的区别与差异Unity开发时,在C#中通过Renderer取材质操作是非常常见的操作,Renderer有两种常规获取材质的方式:sharedMaterials:可以理解这个就是原始材质,所有使用了同一个材质资源的模型renderer,sharedMaterial相同,修改了sharedMaterials相当于就是修改了资源materials:material这个相当于materialInstance,比如同一个箱子模型实例化两个renderer,sharedMaterial相同,这时候你想让其中一个箱子是红色的,另一个箱子是绿色
游戏开发中,可能会碰到一次绘制多个拥有相同mesh的物体,它们可能是位置,旋转等不同,或者是材质的某些参数不同,我们要做的就是配合Unity的渲染方式,尽可能地减少绘制的操作。由于下文主要讨论的是DrawInstance和MaterialPropertyBlock,所以其他的一下影响合批的内容没有讨论。动态合批绘制多个相同Mesh,相同Material的物体时,打开Material的GpuInstance选项,在满足顶点限制的条件下,会进行动态合批(动态合批需要打开)。不同Material会打断合批修改Material的参数,这样会打断合批。并且Unity会为每一个物体创建一个Material
游戏开发中,可能会碰到一次绘制多个拥有相同mesh的物体,它们可能是位置,旋转等不同,或者是材质的某些参数不同,我们要做的就是配合Unity的渲染方式,尽可能地减少绘制的操作。由于下文主要讨论的是DrawInstance和MaterialPropertyBlock,所以其他的一下影响合批的内容没有讨论。动态合批绘制多个相同Mesh,相同Material的物体时,打开Material的GpuInstance选项,在满足顶点限制的条件下,会进行动态合批(动态合批需要打开)。不同Material会打断合批修改Material的参数,这样会打断合批。并且Unity会为每一个物体创建一个Material