Files
Main/Assets/Plugins/References/FuncellBase/AssetsRequest/FileRequest/RequestPathUtil.cs

81 lines
3.2 KiB
C#
Raw Normal View History

2025-01-25 04:38:09 +08:00
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEngine;
using UnityEngine.Gonbest.MagicCube;
namespace Thousandto.Core.Base
{
/// <summary>
/// 资源请求路径工具类,用于修复路径
/// </summary>
public class RequestPathUtil
{
public const bool USE_LZ4 = false;
//判断文件是否存在,
public static bool IsFileExists(string path, out string fixPath,out bool inAndroidPkg)
{
inAndroidPkg = false;
bool ret = false;
fixPath = path;
if (File.Exists(path))
{
ret = true;
}
else
{
string rootPath = PathUtils.GetReleaseResRootPath();
if (path.StartsWith(rootPath))
{
var _isBuildType = PathUtils.GetBuildType();
switch (_isBuildType)
{
case 1: //在Iphone下
///var/containers/Application/E5543D66-83F3-476D-8A8F-49D5332B3763/myProj.app/Data/Raw
fixPath = path.Replace(rootPath, Application.streamingAssetsPath);
ret = File.Exists(fixPath);
break;
case 2: //在android下 -- 在Unity5.5之后,直接使用streamingAssetsPath就可以了.
///data/app/com.myCompany.myProj-1/base.apk
//fixPath = path.Replace(rootPath, Application.dataPath + "!/assets");
//string dir = fixPath.Substring(0, fixPath.LastIndexOf("/"));
//string lowerName = fixPath.Substring(fixPath.LastIndexOf("/")).ToLower();
//fixPath = dir + lowerName;
fixPath = path.Replace(rootPath, Application.streamingAssetsPath);
//如果在包体内,默认存在
inAndroidPkg = true;
ret = true;
break;
case 3: //PC目录
ret = false;
break;
}
}
}
FLogger.DebugLog("修复路径:" + fixPath);
return ret;
}
//使用LZ4和5.x新的打bundle后assetName可以直接是文件名本身
//这里读取文件名同时需要判断Prefab和VFX文件路径因为是打包成scriptableObject的
public static string FixeRequestPath(string requestPath)
{
//if (!USE_LZ4)
// return requestPath;
var retStr = System.IO.Path.GetFileNameWithoutExtension(requestPath);
//prefab和vfx使用了lz4压缩读取bundle中asset只需要文件名即可
if (requestPath.IndexOf("Prefab/") >= 0 || requestPath.IndexOf("VFX/") >= 0 || requestPath.IndexOf("TimeLine/") >= 0)
{
retStr += "_ScriptableObject";
}
return retStr;
}
}
}