2025-06-07 17:43:34 +08:00

246 lines
7.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}