Unity中Renderer.material的坑

Unity中的Renderer.material和sharedMaterial用于访问材质。sharedMaterial更改会影响所有共享该材质的renderer,而修改material则可能克隆材质。当执行renderer.material=newMaterial时,二者指向同一对象,但修改renderer.material会创建新实例。即使不修改,仅访问renderer.material也可能触发克隆,导致后续修改不生效。在某些情况下,即使newMaterial未被其他renderer使用,仍可能发生克隆现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unity中renderer的可以用material和sharedMaterial来访问材质,多个renderer可以公用一个材质,这时sharedMaterial指向同一个材质,修改这个材质后所有renderer都会有所变化。至于用material来访问,按官方文档说法是:

Modifying material will change the material for this object only.
修改material只会改变当前物体
If the material is used by any other renderers, this will clone the shared material and start using it from now on.
如果材质还被其它renderer使用,会克隆共享的材质
Note:
This function automatically instantiates the materials and makes them unique to this renderer. It is your responsibility to destroy the materials when the game object is being destroyed. Resources.UnloadUnusedAssets also destroys the materials but it is usually only called when loading a new level.

这个函数会自动实例化材质,以便renderer独享该材质实例。需要在对象删除时手动销毁材质。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值