Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        /// <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;
        }