public static GameObject FindUIRoot() { GameObject root = GameObject.Find("UIRoot"); if (root != null && root.GetComponent <UIRoot>() != null) { return(root); } LDebugger.LogError(LOG_TAG, "FindUIRoot() UIRoot is not exist"); return(root); }
private T Open <T>(string name, object arg = null) where T : UIPanel { T ui = Load <T>(name); if (ui != null) { ui.Open(arg); } else { LDebugger.LogError(this.GetType().ToString(), "Open() Failed! Name:{0}", name); } return(ui); }
public static void CreateView(string resPath, string resDefaultPath, EntityObject entity, Transform parent = null) { ViewObject obj = null; // string recycleType = resPath; bool userRecycler = true; obj = mRecycler.Pop(recycleType) as ViewObject; if (obj == null) { userRecycler = false; //TODO obj = InstanceViewFromPrefab(recycleType, resDefaultPath); } else { if (!obj.gameObject.activeSelf) { obj.gameObject.SetActive(true); } if (parent != null) { obj.transform.SetParent(parent, false); } else { obj.transform.SetParent(mViewRoot, false); } obj.CreateInFactory(entity, recycleType); if (EnableLog && LDebugger.EnableLog) { LDebugger.Log(LOG_TAG, "CreateView() {0}:{1}->{2}:{3},UseRecycler :{4}", entity.GetType().Name, entity.GetHashCode(), obj.GetRecycleType(), obj.GetInstanceID(), userRecycler); } if (mObjectsMap.ContainsKey(entity)) { LDebugger.LogError(LOG_TAG, "CreateView() 不应该存在重复的映射"); } mObjectsMap[entity] = obj; } }
private static ViewObject InstanceViewFromPrefab(string prefabName, string defaultPrefabName) { GameObject prefab = Resources.Load <GameObject>(prefabName); if (prefab == null) { prefab = Resources.Load <GameObject>(defaultPrefabName); } GameObject go = GameObject.Instantiate(prefab); ViewObject instance = go.GetComponent <ViewObject>(); if (instance == null) { LDebugger.LogError(LOG_TAG, "InstanceViewFromPrefab() prefab=" + prefabName); } return(instance); }
private T Load <T>(string name) where T : UIPanel { T ui = UIRoot.Find <T>(name); if (ui == null) { GameObject original = UIRes.LoadPrefab(name); if (original != null) { GameObject go = GameObject.Instantiate(original) as GameObject; ui = go.GetComponent <T>(); if (ui != null) { go.name = name; UIRoot.AddChild(ui); } else { LDebugger.LogError(this.GetType().ToString(), "Load() Prefab没有增加对应组件:" + name); } } else { LDebugger.LogError(this.GetType().ToString(), "Load() Res Not Found: " + name); } } if (ui != null) { if (mLoadedPanelList.IndexOf(ui) < 0) { mLoadedPanelList.Add(ui); } } return(ui); }