using System; using System.Collections.Generic; namespace YooAsset { /// /// 默认的构建管线 /// public enum EDefaultBuildPipeline { /// /// 内置构建管线 /// BuiltinBuildPipeline, /// /// 可编程构建管线 /// ScriptableBuildPipeline, /// /// 原生文件构建管线 /// RawFileBuildPipeline, } /// /// 运行模式 /// public enum EPlayMode { /// /// 编辑器下的模拟模式 /// EditorSimulateMode, /// /// 离线运行模式 /// OfflinePlayMode, /// /// 联机运行模式 /// HostPlayMode, /// /// WebGL运行模式 /// WebPlayMode, } /// /// 文件系统参数 /// public class FileSystemParameters { internal Dictionary CreateParameters = new Dictionary(); /// /// 文件系统类 /// 格式: "namespace.class,assembly" /// 格式: "命名空间.类型名,程序集" /// public string FileSystemClass { private set; get; } /// /// 文件系统的根目录 /// public string RootDirectory { private set; get; } public FileSystemParameters(string fileSystemClass, string rootDirectory) { FileSystemClass = fileSystemClass; RootDirectory = rootDirectory; } /// /// 添加自定义参数 /// public void AddParameter(string name, object value) { CreateParameters.Add(name, value); } /// /// 创建默认的编辑器文件系统参数 /// 模拟构建结果 /// public static FileSystemParameters CreateDefaultEditorFileSystemParameters(SimulateBuildResult simulateBuildResult) { string fileSystemClass = typeof(DefaultEditorFileSystem).FullName; var fileSystemParams = new FileSystemParameters(fileSystemClass, simulateBuildResult.PackageRootDirectory); return fileSystemParams; } /// /// 创建默认的内置文件系统参数 /// /// 加密文件解密服务类 /// 缓存文件的校验等级 /// 内置文件的根路径 public static FileSystemParameters CreateDefaultBuildinFileSystemParameters(IDecryptionServices decryptionServices = null, EFileVerifyLevel verifyLevel = EFileVerifyLevel.Middle, string rootDirectory = null) { string fileSystemClass = typeof(DefaultBuildinFileSystem).FullName; var fileSystemParams = new FileSystemParameters(fileSystemClass, rootDirectory); fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices); fileSystemParams.AddParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, verifyLevel); return fileSystemParams; } /// /// 创建默认的内置文件系统参数(原生文件) /// /// 加密文件解密服务类 /// 缓存文件的校验等级 /// 内置文件的根路径 public static FileSystemParameters CreateDefaultBuildinRawFileSystemParameters(IDecryptionServices decryptionServices = null, EFileVerifyLevel verifyLevel = EFileVerifyLevel.Middle, string rootDirectory = null) { string fileSystemClass = typeof(DefaultBuildinFileSystem).FullName; var fileSystemParams = new FileSystemParameters(fileSystemClass, rootDirectory); fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices); fileSystemParams.AddParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, verifyLevel); fileSystemParams.AddParameter(FileSystemParametersDefine.APPEND_FILE_EXTENSION, true); fileSystemParams.AddParameter(FileSystemParametersDefine.RAW_FILE_BUILD_PIPELINE, true); return fileSystemParams; } /// /// 创建默认的缓存文件系统参数 /// /// 远端资源地址查询服务类 /// 加密文件解密服务类 /// 缓存文件的校验等级 /// 文件系统的根目录 public static FileSystemParameters CreateDefaultCacheFileSystemParameters(IRemoteServices remoteServices, IDecryptionServices decryptionServices = null, EFileVerifyLevel verifyLevel = EFileVerifyLevel.Middle, string rootDirectory = null) { string fileSystemClass = typeof(DefaultCacheFileSystem).FullName; var fileSystemParams = new FileSystemParameters(fileSystemClass, rootDirectory); fileSystemParams.AddParameter(FileSystemParametersDefine.REMOTE_SERVICES, remoteServices); fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices); fileSystemParams.AddParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, verifyLevel); return fileSystemParams; } /// /// 创建默认的缓存文件系统参数(原生文件) /// /// 远端资源地址查询服务类 /// 加密文件解密服务类 /// 缓存文件的校验等级 /// 文件系统的根目录 public static FileSystemParameters CreateDefaultCacheRawFileSystemParameters(IRemoteServices remoteServices, IDecryptionServices decryptionServices = null, EFileVerifyLevel verifyLevel = EFileVerifyLevel.Middle, string rootDirectory = null) { string fileSystemClass = typeof(DefaultCacheFileSystem).FullName; var fileSystemParams = new FileSystemParameters(fileSystemClass, rootDirectory); fileSystemParams.AddParameter(FileSystemParametersDefine.REMOTE_SERVICES, remoteServices); fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices); fileSystemParams.AddParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, verifyLevel); fileSystemParams.AddParameter(FileSystemParametersDefine.APPEND_FILE_EXTENSION, true); fileSystemParams.AddParameter(FileSystemParametersDefine.RAW_FILE_BUILD_PIPELINE, true); return fileSystemParams; } /// /// 创建默认的Web文件系统参数 /// /// 禁用Unity的网络缓存 public static FileSystemParameters CreateDefaultWebFileSystemParameters(bool disableUnityWebCache = false) { string fileSystemClass = typeof(DefaultWebFileSystem).FullName; var fileSystemParams = new FileSystemParameters(fileSystemClass, null); fileSystemParams.AddParameter(FileSystemParametersDefine.DISABLE_UNITY_WEB_CACHE, disableUnityWebCache); return fileSystemParams; } } /// /// 初始化参数 /// public abstract class InitializeParameters { } /// /// 编辑器下模拟运行模式的初始化参数 /// public class EditorSimulateModeParameters : InitializeParameters { public FileSystemParameters EditorFileSystemParameters; } /// /// 离线运行模式的初始化参数 /// public class OfflinePlayModeParameters : InitializeParameters { public FileSystemParameters BuildinFileSystemParameters; } /// /// 联机运行模式的初始化参数 /// public class HostPlayModeParameters : InitializeParameters { public FileSystemParameters BuildinFileSystemParameters; public FileSystemParameters DeliveryFileSystemParameters; public FileSystemParameters CacheFileSystemParameters; } /// /// WebGL运行模式的初始化参数 /// public class WebPlayModeParameters : InitializeParameters { public FileSystemParameters WebFileSystemParameters; } }