Unity笔记:避免在unity中使用析构函数和构造函数

Unity是单线程设计的游戏引擎,子线程中无法运行UnitySDKMonoBehaviour 的构造函数 和 析构函数 都是在另外一个线程调用的,不是游戏的主线程,无法调用UnityEngine相关的api。

component周期执行awake(),c#对象周期是执行构造函数,可以认为component周期就是游戏主线程周期,对象周期是unity内部Loading线程周期,由于unity的运行机制(可能是出于性能考虑),两者在游戏运行时awake()和构造函数的调用次数和时机会有差别。其中构造函数是在unity内部的loading线程加载,还需要考虑同步问题。

Destory()是在游戏主线程调用,但析构函数有可能在gc线程(即回收线程)时才调用,同样会有同步问题发生。

你可能感兴趣的:(unity)