/// <summary> /// 收集调试器游戏对象及子物体 /// </summary> private void CollectDebuggerGameObject(Transform transform, DebuggerGameObject parent) { DebuggerGameObject gameObject = Main.m_ReferencePool.Spawn <DebuggerGameObject>(); gameObject.Target = transform.gameObject; gameObject.Name = transform.gameObject.name; gameObject.Layer = LayerMask.LayerToName(transform.gameObject.layer); gameObject.IsMain = gameObject.Target.GetComponent <Main>(); gameObject.Parent = parent; _gameObjects.Add(gameObject); if (gameObject.Parent != null) { gameObject.Parent.Childrens.Add(gameObject); } else { GameObjectRoots.Add(gameObject); } for (int i = 0; i < transform.childCount; i++) { CollectDebuggerGameObject(transform.GetChild(i), gameObject); } }
/// <summary> /// 重新收集调试器游戏对象 /// </summary> private IEnumerator CollectDebuggerGameObjects() { yield return(YieldInstructioner.GetWaitForEndOfFrame()); Main.m_ReferencePool.Despawns(_gameObjects); GameObjectRoots.Clear(); _gameObjectCaches.Clear(); GlobalTools.GetRootGameObjectsInAllScene(_gameObjectCaches); for (int i = 0; i < _gameObjectCaches.Count; i++) { CollectDebuggerGameObject(_gameObjectCaches[i].transform, null); } CurrentGameObject = null; IsShowGameObjectFiltrate = false; }