public static void Initialize() { if (_node == null) { _hasInitialized = true; _node = new GameObject("[ProgramRoot]"); _coroutine = _node.AddComponent <RootCoroutine>(); _coroutine.hideFlags |= HideFlags.HideInInspector; _loadingCoroutines = new RootCoroutine[loadingCoroutineCount]; for (int i = 0; i < loadingCoroutineCount; ++i) { _loadingCoroutines[i] = _node.AddComponent <RootCoroutine>(); _loadingCoroutines[i].hideFlags |= HideFlags.HideInInspector; } _root = _node.transform; UnityLogFile.Instance.SetParent(_root); InitRenderFeature(); GameObject.DontDestroyOnLoad(_node); } }
public static void UnInitialize() { if (_node != null) { if (_loadingCoroutines != null) { for (int i = 0; i < _loadingCoroutines.Length; ++i) { _loadingCoroutines[i].StopAllCoroutines(); } _loadingCoroutines = null; } if (_coroutine != null) { _coroutine.StopAllCoroutines(); _coroutine = null; } GameObject.DestroyImmediate(_node); _node = null; _hasInitialized = false; } }