246 lines
7.4 KiB
C#
246 lines
7.4 KiB
C#
|
using LitJson;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.IO;
|
|||
|
using System.Text;
|
|||
|
using UnityEditor;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
#if UNITY_EDITOR
|
|||
|
using YooAsset.Editor;
|
|||
|
#endif
|
|||
|
|
|||
|
public class VersionUtils
|
|||
|
{
|
|||
|
|
|||
|
#if UNITY_EDITOR
|
|||
|
//static string VersionPackagePath => $"{Application.dataPath}/../Bundles/assets_version_info.json";
|
|||
|
static string VersionPackagePath
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android)
|
|||
|
{
|
|||
|
return $"F:\\nginx-1.27.5\\html\\CDN\\Android\\v1.0\\assets_version_info.json";
|
|||
|
}
|
|||
|
else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.iOS)
|
|||
|
{
|
|||
|
return $"F:\\nginx-1.27.5\\html\\CDN\\IPhone\\v1.0\\assets_version_info.json";
|
|||
|
}
|
|||
|
else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows ||
|
|||
|
EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows64 ||
|
|||
|
EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneOSX ||
|
|||
|
EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneLinux64)
|
|||
|
{
|
|||
|
return $"F:\\nginx-1.27.5\\html\\CDN\\PC\\v1.0\\assets_version_info.json";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
Debug.LogError("<22><>ǰƽ̨<C6BD>Ȳ<EFBFBD><C8B2>ǰ<EFBFBD><EFBFBD><D7BF>iOS<4F><53>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD> PC <20>༭<EFBFBD><E0BCAD>ģʽ");
|
|||
|
return "";
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
public static List<AssetBundleCollectorPackage> GetPackageList()
|
|||
|
{
|
|||
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʵ<EFBFBD><CAB5>
|
|||
|
string guidStr = AssetDatabase.FindAssets("AssetBundleCollectorSetting t:ScriptableObject")[0];
|
|||
|
string assetPath = AssetDatabase.GUIDToAssetPath(guidStr);
|
|||
|
var setting = AssetDatabase.LoadAssetAtPath<AssetBundleCollectorSetting>(assetPath);
|
|||
|
|
|||
|
if (setting != null)
|
|||
|
return setting.Packages;
|
|||
|
return null;
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8>汾<EFBFBD>ļ<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
public static void CheckYooPackagesVersion()
|
|||
|
{
|
|||
|
#if UNITY_EDITOR
|
|||
|
|
|||
|
var packageList = GetPackageList();
|
|||
|
if (packageList != null)
|
|||
|
{
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
Yoo_Package_Info nowVersion = null;
|
|||
|
if (File.Exists(VersionPackagePath))
|
|||
|
{
|
|||
|
// ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
|
|||
|
using (StreamReader reader = new StreamReader(VersionPackagePath, Encoding.UTF8))
|
|||
|
{
|
|||
|
var str = reader.ReadToEnd();
|
|||
|
try
|
|||
|
{
|
|||
|
nowVersion = JsonMapper.ToObject<Yoo_Package_Info>(str);
|
|||
|
}
|
|||
|
catch (System.Exception)
|
|||
|
{
|
|||
|
nowVersion = null;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
Dictionary<string, int> dic = new Dictionary<string, int>();
|
|||
|
if (nowVersion != null && nowVersion.packages != null)
|
|||
|
foreach (var item in nowVersion.packages)
|
|||
|
if (!string.IsNullOrEmpty(item.name))
|
|||
|
dic.Add(item.name, item.version);
|
|||
|
|
|||
|
var yooPackageInfo = new Yoo_Package_Info();
|
|||
|
yooPackageInfo.packages = new List<Yoo_Package_Info_Item>();
|
|||
|
|
|||
|
bool isChange = false;
|
|||
|
|
|||
|
for (int i = 0; i < packageList.Count; i++)
|
|||
|
{
|
|||
|
var item = new Yoo_Package_Info_Item();
|
|||
|
item.name = packageList[i].PackageName;
|
|||
|
if (dic.ContainsKey(item.name))
|
|||
|
item.version = dic[item.name];
|
|||
|
else
|
|||
|
{
|
|||
|
isChange = true;
|
|||
|
item.version = 0;
|
|||
|
}
|
|||
|
|
|||
|
yooPackageInfo.packages.Add(item);
|
|||
|
}
|
|||
|
|
|||
|
if (isChange)
|
|||
|
SetYooPackageVersion(yooPackageInfo);
|
|||
|
}
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ذ汾<D8B0>ļ<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
public static Yoo_Package_Info GetYooPackageVersion()
|
|||
|
{
|
|||
|
Yoo_Package_Info nowVersion = null;
|
|||
|
#if UNITY_EDITOR
|
|||
|
if (!File.Exists(VersionPackagePath))
|
|||
|
CheckYooPackagesVersion();
|
|||
|
|
|||
|
// ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
|
|||
|
using (StreamReader reader = new StreamReader(VersionPackagePath, Encoding.UTF8))
|
|||
|
{
|
|||
|
var str = reader.ReadToEnd();
|
|||
|
nowVersion = JsonMapper.ToObject<Yoo_Package_Info>(str);
|
|||
|
}
|
|||
|
#endif
|
|||
|
return nowVersion;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD>ñ<EFBFBD><C3B1>ذ汾<D8B0>ļ<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
public static void SetYooPackageVersion(Yoo_Package_Info nowVersion)
|
|||
|
{
|
|||
|
#if UNITY_EDITOR
|
|||
|
// ȷ<><C8B7>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>
|
|||
|
string directoryPath = Path.GetDirectoryName(VersionPackagePath);
|
|||
|
if (!Directory.Exists(directoryPath))
|
|||
|
Directory.CreateDirectory(directoryPath);
|
|||
|
File.WriteAllText(VersionPackagePath, JsonMapper.ToJson(nowVersion));
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><>ȡjson<6F>汾<EFBFBD>ļ<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
public static Yoo_Package_Info GetToVersion(string json)
|
|||
|
{
|
|||
|
var info = JsonMapper.ToObject<Yoo_Package_Info>(json);
|
|||
|
return info;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD>汾<EFBFBD><E6B1BE>
|
|||
|
/// </summary>
|
|||
|
public static int GetPackageVersion(string name)
|
|||
|
{
|
|||
|
var version = GetYooPackageVersion();
|
|||
|
foreach (var item in version.packages)
|
|||
|
if (item.name == name) return item.version;
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD>汾<EFBFBD><E6B1BE>+1
|
|||
|
/// </summary>
|
|||
|
public static int PackageVesion_Add1(string name)
|
|||
|
{
|
|||
|
var version = GetYooPackageVersion();
|
|||
|
foreach (var item in version.packages)
|
|||
|
{
|
|||
|
if (item.name == name)
|
|||
|
{
|
|||
|
item.version++;
|
|||
|
SetYooPackageVersion(version);
|
|||
|
return item.version;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
version.packages.Add(new Yoo_Package_Info_Item { name = name, version = 0});
|
|||
|
SetYooPackageVersion(version);
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><>Դ<EFBFBD>ܰ汾<DCB0><E6B1BE>+1
|
|||
|
/// </summary>
|
|||
|
public static int PackageTotalVersion_Add1()
|
|||
|
{
|
|||
|
var version = GetYooPackageVersion();
|
|||
|
version.packageVersion++;
|
|||
|
SetYooPackageVersion(version);
|
|||
|
return version.packageVersion;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20>汾<EFBFBD><E6B1BE>Ϣ
|
|||
|
/// </summary>
|
|||
|
public class Yoo_Package_Info
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD>Դ<EFBFBD>汾 ÿ<><C3BF>1<EFBFBD><31><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>Դ<EFBFBD>汾+1
|
|||
|
/// </summary>
|
|||
|
public int packageVersion;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// YooAsset Package <20><>Դ<EFBFBD>汾
|
|||
|
/// </summary>
|
|||
|
public List<Yoo_Package_Info_Item> packages;
|
|||
|
}
|
|||
|
|
|||
|
public class Yoo_Package_Info_Item
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
public string name;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD>汾<EFBFBD><E6B1BE> ÿ<><C3BF>1<EFBFBD>Σ<EFBFBD><CEA3>汾<EFBFBD><E6B1BE>+1
|
|||
|
/// </summary>
|
|||
|
public int version;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ϵͳ<CFB5><CDB3>ʼ<EFBFBD><CABC>
|
|||
|
/// true <20><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ȡStreamingAssets/yoo/DefaultPackage<67>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC>嵥 <20><>ע<EFBFBD><D7A2>apk<70><6B>StreamingAssets<74>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD>嵥<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱨ<EFBFBD><E1B1A8><EFBFBD><EFBFBD>
|
|||
|
/// false <20><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ȡCDN<44>ϵ<EFBFBD><CFB5>嵥<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ȸ<EFBFBD><C8B8><EFBFBD><EFBFBD>̡<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
public bool isBuildinFileSystem = false;
|
|||
|
}
|