Теперь Addressables и UniTask в InstantiateAsync и прочих процессах

This commit is contained in:
ThomasCharester committed 2025-11-03 12:31:26 +03:00
1 parent 6b1f24b72e
commit f940cbffe0
45 files changed
+811 -189

No files matched your search

+3 -1
View File
@@ -1,4 +1,5 @@
using System;
using Code.UI.Panels;
namespace Code.UI
{
@@ -6,6 +7,7 @@ namespace Code.UI
{
void SwitchPanelTo(UIPanel uiPanel, Action callback = null);
UIElement CurrentPanel { get; }
LoadingPanel LoadingScreen { get; }
LoadingScreen LoadingScreen { get; }
void Initialize(LoadingScreen loadingScreen);
}
}
@@ -1,18 +0,0 @@
using UnityEngine;
using UnityEngine.UI;
namespace Code.UI
{
public class LoadingPanel : UIElement
{
[SerializeField] private Image _background;
public override void Hide()
{
_background.enabled = false;
}
public override void Show()
{
_background.enabled = true;
}
}
}
@@ -0,0 +1,22 @@
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Code.UI.Panels
{
public class LoadingScreen : UIElement
{
[SerializeField] private Image background;
[SerializeField] private TMP_Text loadingTitle;
public override void Hide()
{
background.enabled = false;
loadingTitle.enabled = false;
}
public override void Show()
{
background.enabled = true;
loadingTitle.enabled = true;
}
}
}
+8 -6
View File
@@ -1,4 +1,6 @@
using System;
using System.Threading;
using Code.UI.Panels;
using Cysharp.Threading.Tasks;
using UnityEngine;
using Object = UnityEngine.Object;
@@ -11,24 +13,24 @@ namespace Code.UI
private IUIFactory _factory;
public UIElement CurrentPanel { get; private set; }
public LoadingPanel LoadingScreen { get; private set; }
public LoadingScreen LoadingScreen { get; private set; }
public UIService(IUIFactory factory)
{
_factory = factory;
Initialize();
}
private async void Initialize()
public async void Initialize(LoadingScreen loadingScreen)
{
_canvas = await _factory.CreateCanvas();
LoadingScreen = loadingScreen;
LoadingScreen.Show();
LoadingScreen = (LoadingPanel) await _factory.CreatePanel(_canvas,UIPanel.Loading);
_canvas = await _factory.CreateCanvas();
}
public async void SwitchPanelTo(UIPanel uiPanel, Action callback = null)
{
if (!_canvas) await UniTask.WaitUntilValueChanged(_canvas, _ => !_canvas);
if (!_canvas) await UniTask.WaitUntil(() => _canvas );
if(CurrentPanel) Object.Destroy(CurrentPanel.gameObject);