private static void m_CheckCircularReference(CircularReferenceSet set, string name, AssetBundleManifest manifest) { if (set.Contains(name)) { HFLog.E("循环引用 " + set.name + " " + name); return; } HFLog.C("检测中 " + set.name + " " + name); set.Add(name); string[] str = manifest.GetAllDependencies(name); foreach (var item in str) { m_CheckCircularReference(set, item, manifest); } }
/// <summary> /// 销毁BaseElement 重载方法 /// </summary> public virtual void Destroy() { if (IsDisposed) { HFLog.E("Entity 重复销毁 Id " + instanceId); return; } for (int i = components.Count - 1; i >= 0; i--) { Component Component = components[i]; components.RemoveAt(i); Component.OnDestroy(); } for (int i = childs.Count - 1; i >= 0; i--) { Entity child = childs[i]; childs.RemoveAt(i); child.Destroy(); } parent = null; foreach (var item in messageTypeSet) { NotificationCenter.Instance.RemoveObserver(this, item); } messageTypeSet.Clear(); IsNeedUpdate = false; IsNeedFixedUpdate = false; IsNeedLateUpdate = false; DestoryGameObject(); instanceId = 0; }