示例#1
0
        /// <summary>
        /// 初始化资源管理器的新实例。
        /// </summary>
        public ResourceManager()
        {
            m_AssetInfos                    = null;
            m_ResourceInfos                 = null;
            m_ReadWriteResourceInfos        = new SortedDictionary <ResourceName, ReadWriteResourceInfo>(new ResourceNameComparer());
            m_CachedBytesForEncryptedString = new byte[byte.MaxValue];

            m_ResourceIniter       = null;
            m_VersionListProcessor = null;
            m_ResourceChecker      = null;
            m_ResourceUpdater      = null;
            m_ResourceLoader       = new ResourceLoader(this);

            m_ResourceHelper                  = null;
            m_ReadOnlyPath                    = null;
            m_ReadWritePath                   = null;
            m_ResourceMode                    = ResourceMode.Unspecified;
            m_RefuseSetCurrentVariant         = false;
            m_CurrentVariant                  = null;
            m_UpdatePrefixUri                 = null;
            m_ApplicableGameVersion           = null;
            m_InternalResourceVersion         = 0;
            m_UpdateFileCache                 = null;
            m_DecompressCache                 = null;
            m_DecryptResourceCallback         = null;
            m_InitResourcesCompleteCallback   = null;
            m_UpdateVersionListCallbacks      = null;
            m_CheckResourcesCompleteCallback  = null;
            m_UpdateResourcesCompleteCallback = null;

            m_ResourceUpdateStartEventHandler   = null;
            m_ResourceUpdateChangedEventHandler = null;
            m_ResourceUpdateSuccessEventHandler = null;
            m_ResourceUpdateFailureEventHandler = null;
        }
示例#2
0
        /// <summary>
        /// 使用可更新模式并更新版本资源列表。
        /// </summary>
        /// <param name="versionListLength">版本资源列表大小。</param>
        /// <param name="versionListHashCode">版本资源列表哈希值。</param>
        /// <param name="versionListZipLength">版本资源列表压缩后大小。</param>
        /// <param name="versionListZipHashCode">版本资源列表压缩后哈希值。</param>
        /// <param name="updateVersionListCallbacks">版本资源列表更新回调函数集。</param>
        public void UpdateVersionList(int versionListLength, int versionListHashCode, int versionListZipLength, int versionListZipHashCode, UpdateVersionListCallbacks updateVersionListCallbacks)
        {
            if (updateVersionListCallbacks == null)
            {
                throw new GameFrameworkException("Update version list callbacks is invalid.");
            }

            if (m_ResourceMode == ResourceMode.Unspecified)
            {
                throw new GameFrameworkException("You must set resource mode first.");
            }

            if (m_ResourceMode != ResourceMode.Updatable)
            {
                throw new GameFrameworkException("You can not use UpdateVersionList without updatable resource mode.");
            }

            if (m_VersionListProcessor == null)
            {
                throw new GameFrameworkException("You can not use UpdateVersionList at this time.");
            }

            m_UpdateVersionListCallbacks = updateVersionListCallbacks;
            m_VersionListProcessor.UpdateVersionList(versionListLength, versionListHashCode, versionListZipLength, versionListZipHashCode);
        }
示例#3
0
        private void OnCheckerResourceCheckComplete(int removedCount, int updateCount, long updateTotalLength, long updateTotalZipLength)
        {
            m_VersionListProcessor.VersionListUpdateSuccess -= OnVersionListProcessorUpdateSuccess;
            m_VersionListProcessor.VersionListUpdateFailure -= OnVersionListProcessorUpdateFailure;
            m_VersionListProcessor.Shutdown();
            m_VersionListProcessor       = null;
            m_UpdateVersionListCallbacks = null;

            m_ResourceChecker.ResourceNeedUpdate    -= OnCheckerResourceNeedUpdate;
            m_ResourceChecker.ResourceCheckComplete -= OnCheckerResourceCheckComplete;
            m_ResourceChecker.Shutdown();
            m_ResourceChecker = null;

            m_ResourceUpdater.CheckResourceComplete(removedCount > 0);

            if (updateCount <= 0)
            {
                m_ResourceUpdater.ResourceUpdateStart       -= OnUpdaterResourceUpdateStart;
                m_ResourceUpdater.ResourceUpdateChanged     -= OnUpdaterResourceUpdateChanged;
                m_ResourceUpdater.ResourceUpdateSuccess     -= OnUpdaterResourceUpdateSuccess;
                m_ResourceUpdater.ResourceUpdateFailure     -= OnUpdaterResourceUpdateFailure;
                m_ResourceUpdater.ResourceUpdateAllComplete -= OnUpdaterResourceUpdateAllComplete;
                m_ResourceUpdater.Shutdown();
                m_ResourceUpdater = null;
                m_UpdateFileCache = null;
                if (m_DecompressCache != null)
                {
                    m_DecompressCache.Dispose();
                    m_DecompressCache = null;
                }
            }

            m_CheckResourcesCompleteCallback(updateCount > 0, removedCount, updateCount, updateTotalLength, updateTotalZipLength);
            m_CheckResourcesCompleteCallback = null;
        }