using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using LitJson; #if UNITY_EDITOR using UnityEditor; #endif [CreateAssetMenu(menuName = "Config/VersionConfig")] public class VersionConfig : ScriptableObject { public const string VERSION_ALTERNATIVE = "1.0.0"; [SerializeField] public string m_AppId = string.Empty; public string appId { get { if (!string.IsNullOrEmpty(ynmbxxjUtil.Yj_AppID)) { return ynmbxxjUtil.Yj_AppID; } return m_AppId; } } [SerializeField] public string m_SpID = string.Empty; public string SpID { get { if (!string.IsNullOrEmpty(ynmbxxjUtil.Yj_SpID)) { return ynmbxxjUtil.Yj_SpID; } return m_SpID; } } [SerializeField] VersionAuthority m_VersionAuthority; public VersionAuthority versionAuthority { get { return m_VersionAuthority; } } [SerializeField] public string m_Version; public string version { get { return VersionCompare(m_Version, VERSION_ALTERNATIVE); } } [SerializeField] string m_ClientPackageFlag; public string clientPackageFlag { get { return m_ClientPackageFlag; } } [SerializeField] int m_Branch = 0; public int branch { get { if (DebugUtility.Instance.debugBranch >= 0) { return DebugUtility.Instance.debugBranch; } else { return m_Branch; } } } string m_GameId = string.Empty; public string gameId { get { if (string.IsNullOrEmpty(m_GameId)) { var gameText = Resources.Load("Game"); if (gameText != null) { m_GameId = gameText.text; } else { m_GameId = "xbqy"; } } return m_GameId; } } [SerializeField] InstalledAsset m_AssetAccess = InstalledAsset.IngoreDownLoad; public InstalledAsset assetAccess { get { return m_AssetAccess; } set { m_AssetAccess = value; } } [SerializeField] bool m_PartAssetPackage = false; public bool partAssetPackage { get { return m_PartAssetPackage; } set { m_PartAssetPackage = value; } } [SerializeField] string m_ProductName = string.Empty; public string productName { get { return m_ProductName; } } [SerializeField] string m_BundleIdentifier = string.Empty; public string bundleIdentifier { get { return m_BundleIdentifier; } } [SerializeField] string m_KeystoreFileName; public string keystoreFileName { get { return m_KeystoreFileName; } } [SerializeField] string m_KeystorePassword; public string keystorePassword { get { return m_KeystorePassword; } } [SerializeField] string m_KeystoreAlias; public string keystoreAlias { get { return m_KeystoreAlias; } } [SerializeField] string m_KeystoreAliasPassword; public string keystoreAliasPassword { get { return m_KeystoreAliasPassword; } } [SerializeField] string m_AppleDeveloperTeamID; public string appleDeveloperTeamID { get { return m_AppleDeveloperTeamID; } } [SerializeField] bool m_DebugVersion = false; public bool debugVersion { get { return m_DebugVersion; } set { m_DebugVersion = value; } } [SerializeField] bool m_IsBanShu = false; public bool isBanShu { get { return m_IsBanShu; } set { m_IsBanShu = value; } } [SerializeField] string m_BuildTime; public string buildTime { get { return m_BuildTime; } set { m_BuildTime = value; } } [SerializeField] int m_BuildIndex; public int buildIndex { get { return m_BuildIndex; } set { m_BuildIndex = value; } } [SerializeField] Vector2 m_LogoPosition; public Vector2 logoPosition { get { return m_LogoPosition; } } [SerializeField] string m_BanHao; public string banHao { get { if (!string.IsNullOrEmpty(ynmbxxjUtil.Yj_BanHao)) { return ynmbxxjUtil.Yj_BanHao; } return m_BanHao; } } // 打包时sdk文件名,有配置取这个名字,没配置用appid,用于同一个appid版本sdk不同的情况 // 打包读取的logo目录不同,安卓有两个sdk [SerializeField] string m_SdkFileName; public string sdkFileName { get { return m_SdkFileName; } set { m_SdkFileName = value; } } public void Read(string _data) { var dataStrings = _data.Split('\t'); try { m_AppId = dataStrings[2]; m_VersionAuthority = (VersionAuthority)int.Parse(dataStrings[3]); m_Version = dataStrings[4]; m_ClientPackageFlag = dataStrings[5]; m_Branch = int.Parse(dataStrings[6]); m_AssetAccess = (InstalledAsset)int.Parse(dataStrings[8]); m_PartAssetPackage = int.Parse(dataStrings[9]) == 1; m_ProductName = dataStrings[10]; m_BundleIdentifier = dataStrings[11]; m_KeystoreFileName = dataStrings[12]; m_KeystorePassword = dataStrings[13]; m_KeystoreAlias = dataStrings[14]; m_KeystoreAliasPassword = dataStrings[15]; m_AppleDeveloperTeamID = dataStrings[16]; m_DebugVersion = int.Parse(dataStrings[17]) == 1; m_IsBanShu = int.Parse(dataStrings[18]) == 1; m_LogoPosition = dataStrings[19].Vector3Parse(); m_BanHao = dataStrings[20]; m_SpID = dataStrings[21]; m_SdkFileName = dataStrings[24]; } catch (System.Exception ex) { DebugEx.Log(ex); } } static VersionConfig config = null; public static VersionConfig Get() { if (config == null) { if (Application.isEditor) { config = Resources.Load("VersionConfig"); //debug登录后第二次启动默认恢复test if (LocalSave.GetBool("RestoreTest")) { config.m_AppId = "test"; LocalSave.SetBool("RestoreTest", false); Debug.Log("appid 恢复test"); } } else { var text = Resources.Load("VersionConfigEx"); if (text != null) { config = ScriptableObject.CreateInstance(); var json = JsonMapper.ToObject(text.text); ReadJson(json); //逐一解析,不用VersionConfig类结构读取,因为变量定义是按asset的结构定义的 } } } return config; } public static void ReadJson(JsonData _data) { try { config.m_AppId = _data["m_AppId"].ToString(); config.m_VersionAuthority = (VersionAuthority)int.Parse(_data["m_VersionAuthority"].ToString()); config.m_Version = _data["m_Version"].ToString(); config.m_ClientPackageFlag = _data["m_ClientPackageFlag"].ToString(); config.m_Branch = int.Parse(_data["m_Branch"].ToString()); config.m_AssetAccess = (InstalledAsset)int.Parse(_data["m_AssetAccess"].ToString()); config.m_PartAssetPackage = (bool)_data["m_PartAssetPackage"]; config.m_ProductName = _data["m_ProductName"].ToString(); config.m_BundleIdentifier = _data["m_BundleIdentifier"].ToString(); config.m_KeystoreFileName = _data["m_KeystoreFileName"].ToString(); config.m_KeystorePassword = _data["m_KeystorePassword"].ToString(); config.m_KeystoreAlias = _data["m_KeystoreAlias"].ToString(); config.m_KeystoreAliasPassword = _data["m_KeystoreAliasPassword"].ToString(); config.m_AppleDeveloperTeamID = _data["m_AppleDeveloperTeamID"].ToString(); config.m_DebugVersion = (bool)_data["m_DebugVersion"]; config.m_IsBanShu = (bool)_data["m_IsBanShu"]; config.m_LogoPosition = JsonMapper.ToObject(_data["m_LogoPosition"].ToJson()); config.m_BanHao = _data["m_BanHao"].ToString(); config.m_SpID = _data["m_SpID"].ToString(); config.m_BuildIndex = int.Parse(_data["m_BuildIndex"].ToString()); config.m_BuildTime = _data["m_BuildTime"].ToString(); config.m_SdkFileName = _data["m_SdkFileName"].ToString(); Debug.Log("VersionConfig ReadJson Success"); } catch (System.Exception ex) { DebugEx.Log(ex); } } public static void Copy(VersionConfig _from, VersionConfig _to) { _to.m_VersionAuthority = _from.m_VersionAuthority; _to.m_Version = _from.m_Version; _to.m_AppId = _from.m_AppId; _to.m_Branch = _from.m_Branch; _to.m_AssetAccess = _from.m_AssetAccess; _to.m_PartAssetPackage = _from.m_PartAssetPackage; _to.m_BuildTime = _from.m_BuildTime; _to.m_DebugVersion = _from.m_DebugVersion; _to.m_ProductName = _from.m_ProductName; _to.m_BundleIdentifier = _from.m_BundleIdentifier; _to.m_KeystoreFileName = _from.m_KeystoreFileName; _to.m_KeystoreAlias = _from.m_KeystoreAlias; _to.m_KeystorePassword = _from.m_KeystorePassword; _to.m_KeystoreAliasPassword = _from.m_KeystoreAliasPassword; _to.m_AppleDeveloperTeamID = _from.m_AppleDeveloperTeamID; _to.m_IsBanShu = _from.m_IsBanShu; _to.m_ClientPackageFlag = _from.m_ClientPackageFlag; _to.m_LogoPosition = _from.m_LogoPosition; _to.m_BanHao = _from.m_BanHao; _to.m_SpID = _from.m_SpID; _to.m_SdkFileName = _from.m_SdkFileName; } /// /// 比较两个版本,返回更大的那个 /// /// /// /// static string VersionCompare(string _lhs, string _rhs) { var lhsStrings = _lhs.Split('.'); var rhsStrings = _rhs.Split('.'); if (lhsStrings.Length > rhsStrings.Length) { return _lhs; } else if (lhsStrings.Length < rhsStrings.Length) { return _rhs; } else { var version1 = 0; for (int i = 0; i < lhsStrings.Length; i++) { var input = lhsStrings[i]; var intTemp = 0; int.TryParse(input, out intTemp); version1 += intTemp * MathUtility.Power(1000, lhsStrings.Length - 1 - i); } var version2 = 0; for (int i = 0; i < rhsStrings.Length; i++) { var input = rhsStrings[i]; var intTemp = 0; int.TryParse(input, out intTemp); version2 += intTemp * MathUtility.Power(1000, rhsStrings.Length - 1 - i); } return version1 > version2 ? _lhs : _rhs; } } public static int GetVersionNumber(string version) { var numberStrings = version.Split('.'); var number = 0; for (var i = 0; i < Mathf.Min(numberStrings.Length, 3); i++) { var temp = 0; int.TryParse(numberStrings[i], out temp); number += temp * MathUtility.Power(1000, 2 - i); } return number; } }