| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | 
							- using System.IO;
 
- using System.Collections.Generic;
 
- using UnityEngine;
 
- using YooAsset;
 
- /// <summary>
 
- /// 资源文件查询服务类
 
- /// </summary>
 
- public class GameQueryServices : IQueryServices
 
- {
 
- 	public bool QueryStreamingAssets(string packageName, string fileName)
 
- 	{
 
- 		// 注意:fileName包含文件格式
 
- 		return StreamingAssetsHelper.FileExists(packageName, fileName);
 
- 	}
 
- }
 
- #if UNITY_EDITOR
 
- /// <summary>
 
- /// StreamingAssets目录下资源查询帮助类
 
- /// </summary>
 
- public sealed class StreamingAssetsHelper
 
- {
 
- 	public static void Init() { }
 
- 	public static bool FileExists(string packageName, string fileName)
 
- 	{
 
- 		string filePath = Path.Combine(Application.streamingAssetsPath, StreamingAssetsDefine.RootFolderName, packageName, fileName);
 
- 		return File.Exists(filePath);
 
- 	}
 
- }
 
- #else
 
- /// <summary>
 
- /// StreamingAssets目录下资源查询帮助类
 
- /// </summary>
 
- public sealed class StreamingAssetsHelper
 
- {
 
- 	private static bool _isInit = false;
 
- 	private static readonly HashSet<string> _cacheData = new HashSet<string>();
 
- 	/// <summary>
 
- 	/// 初始化
 
- 	/// </summary>
 
- 	public static void Init()
 
- 	{
 
- 		if (_isInit == false)
 
- 		{
 
- 			_isInit = true;
 
- 			var manifest = Resources.Load<BuildinFileManifest>("BuildinFileManifest");
 
- 			if (manifest != null)
 
- 			{
 
- 				foreach (string fileName in manifest.BuildinFiles)
 
- 				{
 
- 					_cacheData.Add(fileName);
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- 	/// <summary>
 
- 	/// 内置文件查询方法
 
- 	/// </summary>
 
- 	public static bool FileExists(string packageName, string fileName)
 
- 	{
 
- 		if (_isInit == false)
 
- 			Init();
 
- 		return _cacheData.Contains(fileName);
 
- 	}
 
- }
 
- #endif
 
- #if UNITY_EDITOR
 
- internal class PreprocessBuild : UnityEditor.Build.IPreprocessBuildWithReport
 
- {
 
- 	public int callbackOrder { get { return 0; } }
 
- 	/// <summary>
 
- 	/// 在构建应用程序前处理
 
- 	/// </summary>
 
- 	public void OnPreprocessBuild(UnityEditor.Build.Reporting.BuildReport report)
 
- 	{
 
- 		string saveFilePath = "Assets/Resources/BuildinFileManifest.asset";
 
- 		if (File.Exists(saveFilePath))
 
- 			File.Delete(saveFilePath);
 
- 		string folderPath = $"{Application.dataPath}/StreamingAssets/{StreamingAssetsDefine.RootFolderName}";
 
- 		DirectoryInfo root = new DirectoryInfo(folderPath);
 
- 		if (root.Exists == false)
 
- 		{
 
- 			Debug.Log($"没有发现YooAsset内置目录 : {folderPath}");
 
- 			return;
 
- 		}
 
- 		var manifest = ScriptableObject.CreateInstance<BuildinFileManifest>();
 
- 		FileInfo[] files = root.GetFiles("*", SearchOption.AllDirectories);
 
- 		foreach (var fileInfo in files)
 
- 		{
 
- 			if (fileInfo.Extension == ".meta")
 
- 				continue;
 
- 			if (fileInfo.Name.StartsWith("PackageManifest_"))
 
- 				continue;
 
- 			manifest.BuildinFiles.Add(fileInfo.Name);
 
- 		}
 
- 		if (Directory.Exists("Assets/Resources") == false)
 
- 			Directory.CreateDirectory("Assets/Resources");
 
- 		UnityEditor.AssetDatabase.CreateAsset(manifest, saveFilePath);
 
- 		UnityEditor.AssetDatabase.SaveAssets();
 
- 		UnityEditor.AssetDatabase.Refresh();
 
- 		Debug.Log($"一共{manifest.BuildinFiles.Count}个内置文件,内置资源清单保存成功 : {saveFilePath}");
 
- 	}
 
- }
 
- #endif
 
 
  |