public static BehaviourLoopInstance RegisterBehaviourQueue <T>(string name) where T : BehaviourLoopInstance
    {
        BehaviourLoopInstance queue = (BehaviourLoopInstance)CreateComponentAsGO <T>(name);

        instance.behaviourQueues.Add(queue);
        return(queue);
    }
    static void Init()
    {
        if (isInited)
        {
            return;
        }

        isInited = true;

        //Update manager init
        coreUpdateManagerGO      = new GameObject();
        coreUpdateManagerGO.name = "CoreUpdateManager";
        DontDestroyOnLoad(coreUpdateManagerGO);

#if UNITY_EDITOR && UPDATEMANAGER_SHOWLOOPOBJECTS
#else
        coreUpdateManagerGO.hideFlags = HideFlags.DontSave | HideFlags.HideInHierarchy | HideFlags.HideInInspector | HideFlags.NotEditable;
#endif

        instance = coreUpdateManagerGO.AddComponent <CoreUpdateManager>();

        additionQueue = (WorkerLoop)CreateComponentAsGO <WorkerLoop>("additionQueue");
        //removalQueue = (WorkerLoop)CreateComponentAsGO<WorkerLoop>("removalQueue");
    }