using System; using System.Collections.Generic; using System.Threading.Tasks; using UnityEngine; namespace DDD { public class TabUiController : MonoBehaviour { private List _tabUis; private TaskCompletionSource _isInitialized = new(); private void Awake() { var tabUiChildren = GetComponentsInChildren(); _tabUis = new List(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]); } } }