之前写C++代码的时候,内存需要自己管理,指针/引用经常指向/引用到了一块已经删除的内存地址而引发程序崩溃。
自从用了C#之后,自己不用处处考虑管理内存了,方便了很多。但还是没有想到Unity中,GameObject/MonoBehaviour被Destroy之后下一帧他的引用就置空了。
测试代码:
class TestMonobehaviour : MonoBehaviour
{
GameObject obj = null;
MonoBehaviour mb = null;
void Awake()
{
GameLogger.LogPurple("Awake : " + Time.realtimeSinceStartup.ToString());
obj = new GameObject();
if (obj != null)
GameLogger.LogBlue("obj is not null");
else
GameLogger.LogBlue("obj is null!");
mb = gameObject.GetOrAddComponent<UITable>();
if (mb != null)
GameLogger.LogBlue("mb is not null");