mirror of
https://github.com/tuyoogame/YooAsset.git
synced 2026-05-27 11:10:11 +00:00
update file system
IFileSystem新增ReadFileData方法
This commit is contained in:
@@ -254,6 +254,29 @@ namespace YooAsset
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual byte[] ReadFileData(PackageBundle bundle)
|
||||
{
|
||||
if (NeedUnpack(bundle))
|
||||
return _unpackFileSystem.ReadFileData(bundle);
|
||||
|
||||
if (Exists(bundle) == false)
|
||||
return null;
|
||||
|
||||
string filePath = GetBuildinFileLoadPath(bundle);
|
||||
return FileUtility.ReadAllBytes(filePath);
|
||||
}
|
||||
public virtual string ReadFileText(PackageBundle bundle)
|
||||
{
|
||||
if (NeedUnpack(bundle))
|
||||
return _unpackFileSystem.ReadFileText(bundle);
|
||||
|
||||
if (Exists(bundle) == false)
|
||||
return null;
|
||||
|
||||
string filePath = GetBuildinFileLoadPath(bundle);
|
||||
return FileUtility.ReadAllText(filePath);
|
||||
}
|
||||
|
||||
#region 内部方法
|
||||
protected string GetDefaultRoot()
|
||||
{
|
||||
|
||||
@@ -111,7 +111,6 @@ namespace YooAsset
|
||||
{
|
||||
None,
|
||||
LoadBuildinRawBundle,
|
||||
CheckLoadBuildinResult,
|
||||
Done,
|
||||
}
|
||||
|
||||
@@ -139,32 +138,17 @@ namespace YooAsset
|
||||
if (_steps == ESteps.LoadBuildinRawBundle)
|
||||
{
|
||||
string filePath = _fileSystem.GetBuildinFileLoadPath(_bundle);
|
||||
Result = filePath;
|
||||
_steps = ESteps.CheckLoadBuildinResult;
|
||||
}
|
||||
|
||||
if (_steps == ESteps.CheckLoadBuildinResult)
|
||||
{
|
||||
if (Result != null)
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
string filePath = Result as string;
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Succeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Failed;
|
||||
Error = $"Can not found buildin raw bundle file : {filePath}";
|
||||
}
|
||||
_steps = ESteps.Done;
|
||||
Result = new RawBundle(_fileSystem, _bundle, filePath);
|
||||
Status = EOperationStatus.Succeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Failed;
|
||||
Error = $"Failed to load buildin raw bundle file : {_bundle.BundleName}";
|
||||
Error = $"Can not found buildin raw bundle file : {filePath}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -303,6 +303,23 @@ namespace YooAsset
|
||||
return Exists(bundle) == false;
|
||||
}
|
||||
|
||||
public virtual byte[] ReadFileData(PackageBundle bundle)
|
||||
{
|
||||
if (Exists(bundle) == false)
|
||||
return null;
|
||||
|
||||
string filePath = GetCacheFileLoadPath(bundle);
|
||||
return FileUtility.ReadAllBytes(filePath);
|
||||
}
|
||||
public virtual string ReadFileText(PackageBundle bundle)
|
||||
{
|
||||
if (Exists(bundle) == false)
|
||||
return null;
|
||||
|
||||
string filePath = GetCacheFileLoadPath(bundle);
|
||||
return FileUtility.ReadAllText(filePath);
|
||||
}
|
||||
|
||||
#region 内部方法
|
||||
private readonly BufferWriter _sharedBuffer = new BufferWriter(1024);
|
||||
public void WriteInfoFile(string filePath, string dataFileCRC, long dataFileSize)
|
||||
@@ -368,7 +385,7 @@ namespace YooAsset
|
||||
}
|
||||
return filePath;
|
||||
}
|
||||
public string GetFileLoadPath(PackageBundle bundle)
|
||||
public string GetCacheFileLoadPath(PackageBundle bundle)
|
||||
{
|
||||
return GetDataFilePath(bundle);
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace YooAsset
|
||||
|
||||
if (_steps == ESteps.LoadAssetBundle)
|
||||
{
|
||||
string filePath = _fileSystem.GetFileLoadPath(_bundle);
|
||||
string filePath = _fileSystem.GetCacheFileLoadPath(_bundle);
|
||||
if (_isWaitForAsyncComplete)
|
||||
{
|
||||
Result = AssetBundle.LoadFromFile(filePath);
|
||||
@@ -122,7 +122,7 @@ namespace YooAsset
|
||||
{
|
||||
// 注意:在安卓移动平台,华为和三星真机上有极小概率加载资源包失败。
|
||||
// 说明:大多数情况在首次安装下载资源到沙盒内,游戏过程中切换到后台再回到游戏内有很大概率触发!
|
||||
string filePath = _fileSystem.GetFileLoadPath(_bundle);
|
||||
string filePath = _fileSystem.GetCacheFileLoadPath(_bundle);
|
||||
byte[] fileData = FileUtility.ReadAllBytes(filePath);
|
||||
if (fileData != null && fileData.Length > 0)
|
||||
{
|
||||
@@ -165,7 +165,7 @@ namespace YooAsset
|
||||
|
||||
while (true)
|
||||
{
|
||||
if(_downloadFileOp != null)
|
||||
if (_downloadFileOp != null)
|
||||
_downloadFileOp.WaitForAsyncComplete();
|
||||
|
||||
if (ExecuteWhileDone())
|
||||
@@ -195,8 +195,7 @@ namespace YooAsset
|
||||
None,
|
||||
CheckExist,
|
||||
DownloadFile,
|
||||
LoadRawBundle,
|
||||
CheckResult,
|
||||
LoadCacheRawBundle,
|
||||
Done,
|
||||
}
|
||||
|
||||
@@ -226,7 +225,7 @@ namespace YooAsset
|
||||
{
|
||||
DownloadProgress = 1f;
|
||||
DownloadedBytes = _bundle.FileSize;
|
||||
_steps = ESteps.LoadRawBundle;
|
||||
_steps = ESteps.LoadCacheRawBundle;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -249,7 +248,7 @@ namespace YooAsset
|
||||
|
||||
if (_downloadFileOp.Status == EOperationStatus.Succeed)
|
||||
{
|
||||
_steps = ESteps.LoadRawBundle;
|
||||
_steps = ESteps.LoadCacheRawBundle;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -259,35 +258,20 @@ namespace YooAsset
|
||||
}
|
||||
}
|
||||
|
||||
if (_steps == ESteps.LoadRawBundle)
|
||||
if (_steps == ESteps.LoadCacheRawBundle)
|
||||
{
|
||||
string filePath = _fileSystem.GetFileLoadPath(_bundle);
|
||||
Result = filePath;
|
||||
_steps = ESteps.CheckResult;
|
||||
}
|
||||
|
||||
if (_steps == ESteps.CheckResult)
|
||||
{
|
||||
if (Result != null)
|
||||
string filePath = _fileSystem.GetCacheFileLoadPath(_bundle);
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
string filePath = Result as string;
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Succeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Failed;
|
||||
Error = $"Can not found cache raw bundle file : {filePath}";
|
||||
}
|
||||
_steps = ESteps.Done;
|
||||
Result = new RawBundle(_fileSystem, _bundle, filePath);
|
||||
Status = EOperationStatus.Succeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Failed;
|
||||
Error = $"Failed to load cache raw bundle file : {_bundle.BundleName}";
|
||||
Error = $"Can not found cache raw bundle file : {filePath}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,6 +135,15 @@ namespace YooAsset
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual byte[] ReadFileData(PackageBundle bundle)
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
public virtual string ReadFileText(PackageBundle bundle)
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
#region 内部方法
|
||||
protected string GetDefaultRoot()
|
||||
{
|
||||
|
||||
@@ -157,6 +157,15 @@ namespace YooAsset
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual byte[] ReadFileData(PackageBundle bundle)
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
public virtual string ReadFileText(PackageBundle bundle)
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
#region 内部方法
|
||||
protected string GetDefaultWebRoot()
|
||||
{
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace YooAsset
|
||||
/// 清空所有的文件
|
||||
/// </summary>
|
||||
FSClearAllBundleFilesOperation ClearAllBundleFilesAsync();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 清空未使用的文件
|
||||
/// </summary>
|
||||
@@ -95,10 +95,21 @@ namespace YooAsset
|
||||
/// 是否需要解压
|
||||
/// </summary>
|
||||
bool NeedUnpack(PackageBundle bundle);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 是否需要导入
|
||||
/// </summary>
|
||||
bool NeedImport(PackageBundle bundle);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 读取文件二进制数据
|
||||
/// </summary>
|
||||
byte[] ReadFileData(PackageBundle bundle);
|
||||
|
||||
/// <summary>
|
||||
/// 读取文件文本数据
|
||||
/// </summary>
|
||||
string ReadFileText(PackageBundle bundle);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user