update extension sample

pull/342/head
何冠峰 2024-08-13 10:54:29 +08:00
parent d34d1117a0
commit ae454b72dc
1 changed files with 41 additions and 4 deletions

View File

@ -21,6 +21,36 @@ public static class WechatFileSystemCreater
/// </summary> /// </summary>
internal class WechatFileSystem : IFileSystem internal class WechatFileSystem : IFileSystem
{ {
private class WebRemoteServices : IRemoteServices
{
private readonly string _webPackageRoot;
protected readonly Dictionary<string, string> _mapping = new Dictionary<string, string>(10000);
public WebRemoteServices(string buildinPackRoot)
{
_webPackageRoot = buildinPackRoot;
}
string IRemoteServices.GetRemoteMainURL(string fileName)
{
return GetFileLoadURL(fileName);
}
string IRemoteServices.GetRemoteFallbackURL(string fileName)
{
return GetFileLoadURL(fileName);
}
private string GetFileLoadURL(string fileName)
{
if (_mapping.TryGetValue(fileName, out string url) == false)
{
string filePath = PathUtility.Combine(_webPackageRoot, fileName);
url = DownloadSystemHelper.ConvertToWWWPath(filePath);
_mapping.Add(fileName, url);
}
return url;
}
}
private readonly Dictionary<string, string> _wxFilePaths = new Dictionary<string, string>(10000); private readonly Dictionary<string, string> _wxFilePaths = new Dictionary<string, string>(10000);
private WXFileSystemManager _wxFileSystemMgr; private WXFileSystemManager _wxFileSystemMgr;
private string _wxFileCacheRoot = string.Empty; private string _wxFileCacheRoot = string.Empty;
@ -52,12 +82,12 @@ internal class WechatFileSystem : IFileSystem
} }
} }
#region 自定义参数 #region 自定义参数
/// <summary> /// <summary>
/// 自定义参数:远程服务接口 /// 自定义参数:远程服务接口
/// </summary> /// </summary>
public IRemoteServices RemoteServices { private set; get; } = null; public IRemoteServices RemoteServices { private set; get; } = null;
#endregion #endregion
public WechatFileSystem() public WechatFileSystem()
@ -129,6 +159,13 @@ internal class WechatFileSystem : IFileSystem
{ {
PackageName = packageName; PackageName = packageName;
// 注意CDN服务未启用的情况下使用微信WEB服务器
if (RemoteServices == null)
{
string webRoot = PathUtility.Combine(Application.streamingAssetsPath, YooAssetSettingsData.Setting.DefaultYooFolderName, packageName);
RemoteServices = new WebRemoteServices(webRoot);
}
_wxFileSystemMgr = WX.GetFileSystemManager(); _wxFileSystemMgr = WX.GetFileSystemManager();
_wxFileCacheRoot = WX.env.USER_DATA_PATH; //注意:如果有子目录,请修改此处! _wxFileCacheRoot = WX.env.USER_DATA_PATH; //注意:如果有子目录,请修改此处!
} }
@ -171,7 +208,7 @@ internal class WechatFileSystem : IFileSystem
throw new System.NotImplementedException(); throw new System.NotImplementedException();
} }
#region 内部方法 #region 内部方法
private string GetWXFileLoadPath(PackageBundle bundle) private string GetWXFileLoadPath(PackageBundle bundle)
{ {
if (_wxFilePaths.TryGetValue(bundle.BundleGUID, out string filePath) == false) if (_wxFilePaths.TryGetValue(bundle.BundleGUID, out string filePath) == false)
@ -181,6 +218,6 @@ internal class WechatFileSystem : IFileSystem
} }
return filePath; return filePath;
} }
#endregion #endregion
} }
#endif #endif