public TScreen GetScreen <TScreen>() where TScreen : IScreen, new() { Type screenType = typeof(TScreen); TScreen screen; if (!_screens.ContainsKey(screenType)) { screen = new TScreen() { ScreenManager = this }; _screens.Add(screenType, screen); screen.Data.transform.SetParent(Container.ScreensContainer); screen.Init(); } else { screen = (TScreen)_screens[screenType]; } return(screen); }