Unity内存优化

在Unity中经常需要动态创建和销毁物体,动态加载纹理等。但是当动态加载资源的数量较多时,虽然有些资源已卸载(Destroy(this.gameObject)),但其实仍然在内存中,运行一段时间后Unity就会报内存不够的错误。

解决方法:

1.销毁不需要的资源,调用Destroy()函数。如Mesh、Matierial、GameObject等。

2.在Update()函数中调用Resources.UnloadUnusedAssets()。建议不要调用过于频繁,每次在完成资源销毁后再调用。

 

Resources.UnloadUnusedAssets的作用是卸载未使用的资源。

确定资源是否在使用是遍历所有对象(GameObject),如果所有对象和脚本都未涉及到某个资源,那么该资源就视为未使用。还会检查静态变量

但是,脚本执行堆栈不会被检查,所以脚本中引用的资源将会卸载,如果需要,在下一次使用其属性或方法会被加载回来。这需要对在内存中被修改的资源进行额外的关注。 在触发资源垃圾收集之前,请确保调用EditorUtility.SetDirty。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值