Unity 材质设置属性优化

一般我们修改材质球参数是直接拿对于材质球来设置参数,不过还有优化空间

使用材质球属性块来代替直接修改材质球属性

材质球属性块

材质属性块被用于Graphics.DrawMesh和Renderer.SetPropertyBlock两个API,当我们想要绘制许多相同材质但不同属性的对象时可以使用它。例如你想改变每个绘制网格的颜色,但是它却不会改变渲染器的状态。

我们来看看Renderer这个类,它包含了Material,SharedMaterial这两个属性;GetPropertyBlock,SetPropertyBlock这两个函数,其中两个属性是用来访问和改变材质的,而两个函数是用来设置和获取材质属性块的。我们知道,当我们操作材质共性时,可以使用SharedMaterial属性,改变这个属性,那么所有使用此材质的物件都将会改变,而我们需要改变单一材质时,需要使用Material属性,而在第一次使用Material时其实是会生成一份材质拷贝的,即Material(Instance),而使用材质属性块不会拷贝一份材质球,从而效率更高

下面写个简单的使用方法

        int propertyId = Shader.PropertyToID("shader变量");
        MaterialPropertyBlock p = null ;
        r.GetPropertyBlock(p);
        p.SetInt(propertyId, 1);
        r.SetPropertyBlock(p);

优化是一点一滴积累出来,为了兼容更多玩家,必须尽可能优化

这里只是记录一下优化

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值