Unity中MonoBehaviour的构造与析构问题
2023/07
20
14:07
以下为示例代码
public class MyClass: MonoBehaviour
{
MyClass() {}
~MyClass() {}
void Start() {}
void OnDestroy() {}
void OnEnable() {}
void OnDisable() {}
}
坑:
1、MyClass()和~MyClass()的调用并不是在主线程中,不能调用任何UnityAPI
2、~MyClass()的调用时机是不确定的,也就是说,调用了UnityEngine.Object.Destroy(obj) 之后,并不会立即触发 ~MyClass(), 有可能一直不触发
3、若挂载的GameObject状态为Unactive,则调用了UnityEngine.Object.Destroy(obj) 之后,不会触发OnDestroy
4、所以,如果要成对使用,唯一推荐的匹配对为:OnEnale / OnDisale
5、OnEnable 和 OnDisale 可能会被多次触发,所以要小心,又是坑
CopyRights: The Post by BY-NC-SA For Authorization,Original If Not Noted,Reprint Please Indicate From 老刘@开发笔记
Post Link: Unity中MonoBehaviour的构造与析构问题
Post Link: Unity中MonoBehaviour的构造与析构问题