private T CreateScreen <T>(string name) where T : BasePopup { T s = null; if (_childs.ContainsKey(name)) { s = _childs[name] as T; } else { var prefub = Resources.Load <GameObject>("screens/" + name); var obj = UnityUtils.Clone(prefub, _uiRoot); s = obj.GetComponent <T>(); _childs.Add(name, s); } s.name = name; s.gameObject.SetActive(false); return(s); }