using UnityEngine; using XGame.Framework.Asset; using XGame.Framework.Quality; using XGame.Framework.Time; namespace XGame.Framework.UI { public class UIModuleBuilder { protected IUIModule product; public IUIModule Product => product; protected IUITree uiTree; protected IAssetModule assetModule; public void Build(IQualityModule qualityModule, ITimeModule timeModule) { assetModule = new AssetModule(); CreateUITree(); CreateProduct(); var context = new UIContext(qualityModule, timeModule, product); (product as IUIContextSetter).Context = context; } protected virtual void CreateUITree() { const string uiTreeName = "UITree"; var instance = Object.Instantiate(Resources.Load(uiTreeName)); Assert.IsNotNull(instance, "UITree不能为空."); instance.gameObject.name = uiTreeName; instance.transform.SetParent(AppManager.Root, false); uiTree = instance; } protected virtual void CreateProduct() { product = new UIModule(assetModule, uiTree); } } }