public void OpenModule <T>() where T : BaseModule { if (_currentModule != null) { _currentModule.Dispose(); _currentModule = null; } foreach (var module in _allModules) { module.gameObject.SetActive(false); } var desiredModule = _allModules.OfType <T>().FirstOrDefault(); if (desiredModule == null) { Debug.LogError($"Module of type '{typeof(T).Name}' not found"); return; } desiredModule.gameObject.SetActive(true); desiredModule.Activate(_gameController, _canvas); _currentModule = desiredModule; desiredModule.OnModuleLoaded(); }