コード例 #1
0
ファイル: ChildTreeRoot.cs プロジェクト: hong672850430/HLOD
        /// <summary>
        ///刷新状态
        /// </summary>
        public void Refesh()
        {
            /*
             * if(m_LoadCount < 1 && m_UnLoadCount < 1)//gc
             * {
             *  if (UnLoadCount > m_Refesh)
             *  {
             *      UnLoadCount = 0;
             *      Resources.UnloadUnusedAssets();
             *  }
             *  return;
             * }*/
            if (!m_ImmediateUnLoad || m_LoadCount > 0 || m_UnLoadCount < 1) //是否等待加载完成
            {
                return;
            }

            foreach (var value in m_LoadAsset)
            {
                LoadAssetBase loadAsset = value.Value;
                if (loadAsset.ReadyState == Loadm_State.Unloaded)//卸载标记要卸载的
                {
                    loadAsset.ReadyState = Loadm_State.None;
                    loadAsset.UnLoad();
                    m_UnLoadCount--;
                }
            }
        }
コード例 #2
0
ファイル: ChildTreeRoot.cs プロジェクト: hong672850430/HLOD
        /// <summary>
        ///卸载
        /// </summary>
        public void AddUnLoadAsset(UnityLODGroupFast fast)
        {
            int           id        = fast.GetInstanceID();
            LoadAssetBase loadAsset = null;

            fast.SetEnableApply();
            if (!m_LoadAsset.TryGetValue(id, out loadAsset))
            {
                return;
            }
            switch (loadAsset.State)
            {
            case Loadm_State.Loading:
                m_LoadCount--;
                loadAsset.UnLoad();
                break;

            case Loadm_State.Instantiated:
                if (!m_ImmediateUnLoad)   //不等待
                {
                    loadAsset.UnLoad();
                    break;
                }
                m_UnLoadCount++;
                loadAsset.ReadyState = Loadm_State.Unloaded;
                break;

            case Loadm_State.Unloaded:
            case Loadm_State.UnLoading:
                break;
            }
        }
コード例 #3
0
        //提供池子里的给过去
        public override LoadAssetBase Spawn()
        {
            if (m_Vector == null)
            {
                GameObject obj = new GameObject(s_VectorName);
                m_Vector = obj.AddComponent <LoadAssetVector>();
            }
            LoadAssetBase t = null;

            if (_freeObjs.Count <= 0)
            {
                //本套资源流式装卸用LoadAsset,如果自己写的请继承LoadAssetBase类,然后new你的这个类
                t = new LoadAsset(m_Vector);
                //t = new LoadAssetBase(m_Vector);
                _busyObjs.Add(t);
                t.OnEnable();
                return(t);
            }

            t = _freeObjs[0];
            _freeObjs.RemoveAt(0);
            _busyObjs.Add(t);
            t.OnEnable();
            return(t);
        }
コード例 #4
0
        //回收到池子里
        public override void UnSpawn(LoadAssetBase obj)
        {
            if (obj == null)
            {
                return;
            }

            if (!_freeObjs.Contains(obj))
            {
                _freeObjs.Add(obj);
            }
            if (_busyObjs.Contains(obj))
            {
                _busyObjs.Remove(obj);
            }
        }
コード例 #5
0
ファイル: ChildTreeRoot.cs プロジェクト: hong672850430/HLOD
        /// <summary>
        ///加载
        /// </summary>
        public void AddLoadAsset(UnityLODGroupFast fast)
        {
            int           id        = fast.GetInstanceID();
            LoadAssetBase loadAsset = null;

            fast.SetEnableApply();

            if (!m_LoadAsset.TryGetValue(id, out loadAsset))
            {
                loadAsset = s_LoadAssetPool.Spawn();
                m_LoadAsset.Add(id, loadAsset);
            }

            //要准备卸载,把状态改变回来
            if (loadAsset.ReadyState == Loadm_State.Unloaded)
            {
                m_UnLoadCount--;
            }
            loadAsset.ReadyState = Loadm_State.None;
            switch (loadAsset.State)
            {
            case Loadm_State.Instantiated:
                loadAsset.StopCoroutines();
                break;

            case Loadm_State.Loading:
                break;

            case Loadm_State.Unloaded:
                m_LoadCount++;
                loadAsset.Load(fast, this);
                break;

            case Loadm_State.UnLoading:
                m_LoadCount++;
                loadAsset.StopCoroutines();
                loadAsset.Load(null, null);
                break;
            }
        }
コード例 #6
0
ファイル: PoolBase.cs プロジェクト: hong672850430/HLOD
 //回收到池子里
 public virtual void UnSpawn(LoadAssetBase obj)
 {
 }
コード例 #7
0
ファイル: ChildTreeRoot.cs プロジェクト: hong672850430/HLOD
 /// <summary>
 ///节点卸载完毕
 /// </summary>
 public void Unloaded(LoadAssetBase loadAsset, UnityLODGroupFast fast)
 {
     s_LoadAssetPool.UnSpawn(loadAsset);
     m_LoadAsset.Remove(fast.GetInstanceID());
     //UnLoadCount++;
 }
コード例 #8
0
ファイル: ChildTreeRoot.cs プロジェクト: hong672850430/HLOD
 /// <summary>
 ///节点实例化完毕
 /// </summary>
 public void Instantiated(LoadAssetBase loadAsset, UnityLODGroupFast fast)
 {
     m_LoadCount--;
 }