Unity游戏开发 - 内存管理

Memory Management in Unity - Unity Learn

1.使用Destroy(myObject)销毁对象才会释放其内存。将对象的引用设置为 null 不会释放内存。
2.您应该将持久(长期)对象设置为Class,将短暂(短期)对象设置为Struct。结构不会在堆上分配,因此不会被垃圾回收(堆栈是由操作系统自动管理的,当函数退出时,它们会自动从堆栈中弹出并释放内存。)、
3. Enumerator在退出前,不会清理其内存。手动写的Enumerator,需要手动释放内存。foreach之类的内置关键字会自动释放内存。
4.任何渲染器的材质属性都会导致材质被克隆,即使没有指定任何内容也是如此。此克隆材质不会被垃圾收集,并且仅在您更改场景或调用Resources.UnloadUnusedAssets()时才会被清除。如果您想访问只读材质,可以使用 customRenderer.sharedMaterial。
5.调用UnloadScene()来销毁并卸载与场景关联的游戏对象,不会卸载关联的资产。为了卸载资源并释放托管内存和本机内存,您需要在场景卸载后调用Resources.UnloadUnusedAssets() 。
6.Mono堆内存的占用,是只会增加不会减少的。

参考:

Unity游戏开发 - 内存篇 - 知乎

Unity资源管理(AssetBundle加载和卸载)及内存管理(内存的申请和释放)_unity 资源卸载-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值