//------------------------------------------------------------ // Game Framework // Copyright © 2013-2021 loyalsoft. All rights reserved. // Homepage: http://www.game7000.com/ // Feedback: http://www.game7000.com/ //------------------------------------------------------------ using GameFramework; using GameFramework.FileSystem; using System.Collections.Generic; using UnityEngine; namespace UnityGameFramework.Runtime { /// /// 文件系统件。 /// [DisallowMultipleComponent] [AddComponentMenu("Game Framework/File System")] public sealed class FileSystemComponent : GameFrameworkComponent { private IFileSystemManager m_FileSystemManager = null; [SerializeField] private string m_FileSystemHelperTypeName = "UnityGameFramework.Runtime.DefaultFileSystemHelper"; [SerializeField] private FileSystemHelperBase m_CustomFileSystemHelper = null; /// /// 获取文件系统数量。 /// public int Count { get { return m_FileSystemManager.Count; } } /// /// 游戏框架组件初始化。 /// protected override void Awake() { base.Awake(); m_FileSystemManager = GameFrameworkEntry.GetModule(); if (m_FileSystemManager == null) { Log.Fatal("File system manager is invalid."); return; } FileSystemHelperBase fileSystemHelper = Helper.CreateHelper(m_FileSystemHelperTypeName, m_CustomFileSystemHelper); if (fileSystemHelper == null) { Log.Error("Can not create fileSystem helper."); return; } fileSystemHelper.name = "FileSystem Helper"; Transform transform = fileSystemHelper.transform; transform.SetParent(this.transform); transform.localScale = Vector3.one; m_FileSystemManager.SetFileSystemHelper(fileSystemHelper); } private void Start() { } /// /// 检查是否存在文件系统。 /// /// 要检查的文件系统的完整路径。 /// 是否存在文件系统。 public bool HasFileSystem(string fullPath) { return m_FileSystemManager.HasFileSystem(fullPath); } /// /// 获取文件系统。 /// /// 要获取的文件系统的完整路径。 /// 获取的文件系统。 public IFileSystem GetFileSystem(string fullPath) { return m_FileSystemManager.GetFileSystem(fullPath); } /// /// 创建文件系统。 /// /// 要创建的文件系统的完整路径。 /// 要创建的文件系统的访问方式。 /// 要创建的文件系统的最大文件数量。 /// 要创建的文件系统的最大块数据数量。 /// 创建的文件系统。 public IFileSystem CreateFileSystem(string fullPath, FileSystemAccess access, int maxFileCount, int maxBlockCount) { return m_FileSystemManager.CreateFileSystem(fullPath, access, maxFileCount, maxBlockCount); } /// /// 加载文件系统。 /// /// 要加载的文件系统的完整路径。 /// 要加载的文件系统的访问方式。 /// 加载的文件系统。 public IFileSystem LoadFileSystem(string fullPath, FileSystemAccess access) { return m_FileSystemManager.LoadFileSystem(fullPath, access); } /// /// 销毁文件系统。 /// /// 要销毁的文件系统。 /// 是否删除文件系统对应的物理文件。 public void DestroyFileSystem(IFileSystem fileSystem, bool deletePhysicalFile) { m_FileSystemManager.DestroyFileSystem(fileSystem, deletePhysicalFile); } /// /// 获取所有文件系统集合。 /// /// 获取的所有文件系统集合。 public IFileSystem[] GetAllFileSystems() { return m_FileSystemManager.GetAllFileSystems(); } /// /// 获取所有文件系统集合。 /// /// 获取的所有文件系统集合。 public void GetAllFileSystems(List results) { m_FileSystemManager.GetAllFileSystems(results); } } }