using System.Collections; using System.Collections.Generic; using UnityEngine; public class ViewManager : MonoBehaviour { public static ViewManager Instance { get; private set; } [SerializeField] private List views = new List(); [SerializeField] private List defaultViews; [SerializeField] private bool autoInitialize; private void Awake() { Instance = this; } private void Start() { if (autoInitialize) InitAllViews(); } public void InitAllViews() { foreach (var view in views) { view.Init(); view.Show(false); } if (defaultViews.IsEmpty()) return; foreach (var view in defaultViews) { view.Show(true); } } public void Init() where T : BaseView { foreach (var view in views) { if (view is T) { view.Init(); } } } public void Show(bool isActive) where T : BaseView { foreach (var view in views) { if (view is T) { view.Show(isActive); } } } public void Add(BaseView view,bool isActiveByDefault = true) { view.Init(); view.Show(isActiveByDefault); views.Add(view); } public void Remove(BaseView view) { views.Remove(view); view.Destroy(); } public bool TryGetView(out T baseView) where T : BaseView { foreach (var view in views) { if (view is T) { baseView = (T)view; return true; } } baseView = null; return false; } }