35 lines
1.2 KiB
C#
35 lines
1.2 KiB
C#
using Code.Configs;
|
|
using Cysharp.Threading.Tasks;
|
|
using Reflex.Attributes;
|
|
using UnityEngine;
|
|
using UnityEngine.AddressableAssets;
|
|
using Object = UnityEngine.Object;
|
|
|
|
namespace Code.UI
|
|
{
|
|
public class UIFactory : IUIFactory
|
|
{
|
|
private AssetReference _canvasAssetReference;
|
|
private AssetReference[] _uiPanelsAssetReferences;
|
|
|
|
public UIFactory(UIConfig uiConfig)
|
|
{
|
|
_canvasAssetReference = uiConfig.canvasAssetReference;
|
|
_uiPanelsAssetReferences = uiConfig.uiPanelsAssetReferences;
|
|
}
|
|
public async UniTask<Canvas> CreateCanvas()
|
|
{
|
|
// Canvas canvasPrefab = await Addressables.LoadAssetAsync<Canvas>(_canvasAssetReference);
|
|
Canvas canvas = (await Addressables.InstantiateAsync(_canvasAssetReference).ToUniTask()).GetComponent<Canvas>();
|
|
|
|
Object.DontDestroyOnLoad(canvas);
|
|
|
|
return canvas;
|
|
}
|
|
|
|
public async UniTask<UIElement> CreatePanel(Canvas canvas, UIPanel uiPanel)
|
|
{
|
|
return (await Addressables.InstantiateAsync(_uiPanelsAssetReferences[(int)uiPanel], canvas.transform).ToUniTask()).GetComponent<UIElement>();
|
|
}
|
|
}
|
|
} |