public static void CreateView(string resPath, string resDefaultPath, EntityObject entity, Transform parent = null) { ViewObject obj = null; string recycleType = resPath; bool useRecycler = true; obj = objRecycler.Pop(recycleType) as ViewObject; if (obj == null) { useRecycler = false; obj = InstanceViewFromPrefab(recycleType, resDefaultPath); } if (obj != null) { if (!obj.gameObject.activeSelf) { obj.gameObject.SetActive(true); } if (parent != null) { obj.transform.SetParent(parent, false); } else { obj.transform.SetParent(viewRoot, false); } obj.CreateInFactory(entity, recycleType); if (EnableLog && MyLogger.EnableLog) { MyLogger.Log(LOG_TAG, "CreateView() {0}:{1} -> {2}:{3}, UseRecycler:{4}", entity.GetType().Name, entity.GetHashCode(), obj.GetRecycleType(), obj.GetInstanceID(), useRecycler); } if (mapObjectList.ContainsKey(entity)) { MyLogger.LogError(LOG_TAG, "CreateView()", " Mapping already exist!"); } mapObjectList[entity] = obj; } }
public static void ReleaseView(EntityObject entity) { if (entity != null) { ViewObject obj = mapObjectList[entity]; if (obj != null) { if (EnableLog && MyLogger.EnableLog) { MyLogger.Log(LOG_TAG, "ReleaseView() {0}:{1} -> {2}:{3}", entity.GetType().Name, entity.GetHashCode(), obj.GetRecycleType(), obj.GetInstanceID()); } mapObjectList.Remove(entity); obj.ReleaseInFactory(); obj.gameObject.SetActive(false); //push to recycler objRecycler.Push(obj); } } }