Unity3D内存泄漏Render的sharedMaterial和material

Renderer.material

每一次引用就会生成一个新的material到内存中,因此是独立的,多个物体的相同材质间不会影响,但是会内存泄漏,可以通过Resources.UnloadUnusedAssets释放。

Renderer.sharedMaterial

当我们改变Renderer.sharedMaterial的时候,所有使用这个材质球物体都会被改变,并且改变后的设置将会被保存在项目工程中,即还影响了本地.mat文件。

官方并不推荐使用这个属性去修改material。


雨松MOMO的解决方式如下,但是就像上面说的,会影响到所有使用这个材质的物体。

public static Material GetMaterial(Renderer render)
	{
#if UNITY_EDITOR
		return render.material;
#else
		return render.sharedMaterial;
#endif
	}
还有一种方式是说第一次用material,之后都改用shareMaterial,这样可以避免修改属性影响其他的物体(因为第一次material已经新建了一个),又能避免内存泄漏(shareMaterial),但是经过的测试,发现然并卵,因为在render.material这一步已经报内存泄漏了,所以这个问题暂时就不知道怎么办了,如果有大牛解决了此问题,还望不吝赐教。

参考:http://www.jianshu.com/p/ababf547d992

参考:http://www.xuanyusong.com/archives/2530

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值