/// <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; }
/// <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); }
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; }