46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
![]() |
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Threading.Tasks;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace DDD
|
||
|
{
|
||
|
public class TabUiController : MonoBehaviour
|
||
|
{
|
||
|
private List<TabUi> _tabUis;
|
||
|
private TaskCompletionSource<bool> _isInitialized = new();
|
||
|
|
||
|
private void Awake()
|
||
|
{
|
||
|
var tabUiChildren = GetComponentsInChildren<TabUi>();
|
||
|
_tabUis = new List<TabUi>(tabUiChildren);
|
||
|
foreach (var tabUi in _tabUis)
|
||
|
{
|
||
|
tabUi.Initialize();
|
||
|
}
|
||
|
_isInitialized.SetResult(true);
|
||
|
}
|
||
|
|
||
|
public async void SelectedTab(TabUi selectedTabUi)
|
||
|
{
|
||
|
await _isInitialized.Task;
|
||
|
|
||
|
foreach (var tabUi in _tabUis)
|
||
|
{
|
||
|
bool shouldBeActive = tabUi == selectedTabUi;
|
||
|
|
||
|
if (tabUi.IsOn != shouldBeActive)
|
||
|
{
|
||
|
tabUi.TabContentsSetActive(shouldBeActive);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void ActivateFirstTab()
|
||
|
{
|
||
|
if (_tabUis == null || _tabUis.Count == 0) return;
|
||
|
|
||
|
SelectedTab(_tabUis[0]);
|
||
|
}
|
||
|
}
|
||
|
}
|