`FTickableStatics`是一个单例,只用于保存和操作`TickableObjects` ## 成员变量 ```cpp //需要Tick的对象数组 TArray<FTickableObjectBase::FTickableObjectEntry> TickableObjects; //需要下次Tick时加入Tick数组的新对象 TSet<FTickableGameObject*> NewTickableObjects; ``` ## 单例实现 ```cpp static FTickableStatics& Get() { static FTickableStatics Singleton; return Singleton; } ``` ## 成员函数 两个操作均是添加或从`NewTickableObjects`删除,直接在`TickableObjects`操作的方法是由`FTickableObjectBase`提供的 ```cpp void QueueTickableObjectForAdd(FTickableGameObject* InTickable) { FScopeLock NewTickableObjectsLock(&NewTickableObjectsCritical); NewTickableObjects.Add(InTickable); } void RemoveTickableObjectFromNewObjectsQueue(FTickableGameObject* InTickable) { FScopeLock NewTickableObjectsLock(&NewTickableObjectsCritical); NewTickableObjects.Remove(InTickable); } ```