using System; using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEditor; using UnityEngine; namespace Stary.Evo { [CreateAssetMenu(fileName = "HotfixMainResDomain", menuName = "Evo/Create HotfixMainResDomain")] public class HotfixMainResDomain : ScriptableObject { [TabGroup("MainResDomain")] [InlineProperty, HideLabel] public HotfixMainResDomainEntity hotfixMainResDomainEntity; [TabGroup("ProjectInfo")] [InlineProperty, HideLabel] public ProjectInfo projectInfo; [TabGroup("BuildConfig")] [InlineProperty, HideLabel] public BuildConfig buildConfig; } [Serializable] public class HotfixMainResDomainEntity { public string ipconfig = "http://192.168.31.100:5005/HotRefresh"; public string mainDomainVersion = ""; public string username = "UnityHot"; public string password = "Unity1234"; } [Serializable] public class ProjectInfo { /// /// 项目中文名称 /// public string projectName; /// /// 项目代号 /// public string projectCode; /// /// 项目包名 /// [ReadOnly] public string projectPackageName; #if UNITY_EDITOR /// /// 资源加载场景 /// [LabelText("资源加载场景")] [Required("如果需要场景作为资源加载过程中的过渡,请将其拖到此处")] public SceneAsset loadingScene; #endif /// /// 资源加载场景(路径) /// public string loadingScenePath; } [Serializable] public class BuildConfig { [SerializeField] [LabelText("包体配置")] private List packages = new(); public PackageConfig Get(string packageID) { var result = packages.Find(x=>x.packageID==packageID); if (result == null) { result = new PackageConfig(); result.packageID = packageID; packages.Add(result); } return result; } public void Set(string packageID, PackageConfigInfo config) { var package = Get(packageID); package.info = config; } } [Serializable] public class PackageConfig { [FoldoutGroup("@packageID")] [LabelText("包体ID")] public string packageID; [FoldoutGroup("@packageID")] [InlineProperty, HideLabel] public PackageConfigInfo info; } [Serializable] public class PackageConfigInfo { [LabelText("App名称")] public string appName; } }