使用MonoBehaviour自动释放资源的一个问题
先说个结论。在Unity里,用MonoBehaviour去实现资源的自动释放是不可行的。
事情的起因是这样的,游戏界面中需要根据逻辑去设置图标。图标不是直接拼在界面上的,需要动态加载。既然是动态加载的,就必定涉及到资源释放。我的想法很简单,在MonoBehaviour的OnDestroy中进行资源释放。但是游戏运行时,资源依然没有正确释放。于是我对MonoBehaviour的生命周期进行了测试。以下是示意代码:
AutoRelease.cs
1 | public class AutoRelease : MonoBehaviour |
AutoReleaseTest.cs
1 | public class AutoReleaseTest : MonoBehaviour |
代码逻辑很简单,根据Prefab实例化一个物体,将它创建在parent节点下。经过100帧之后,删除它。接着,我们造一个测试用例。
一切准备就绪,点击运行。Prefab启动后出现在Cube节点下,经过100帧后消失。表现完全符合我们的预期。可是Console里却是空空如也。
大家可以按照我文中的例子自己动手尝试。我的环境是Unity2020.3.9
贴一下我的知乎地址,欢迎大家来讨论。点击前往