/// <summary> /// 实例化一个实体对象 /// </summary> /// <returns>The entity.</returns> /// <typeparam name="T">The 1st type parameter.</typeparam> public static T InstanceEntity <T>() where T : EntityObject, new() { EntityObject obj = null; bool useRecycler = true; //先从回收池中寻找 Type type = typeof(T); obj = m_recycler.Pop(type.FullName) as EntityObject; if (obj == null) { useRecycler = false; obj = new T(); } obj.InstanceInFactory(); m_listObject.Add(obj); if (EnableLog && Debuger.EnableLog) { Debuger.Log(LOG_TAG, "InstanceEntity() {0}:{1}, UseRecycler:{2}", obj.GetType().Name, obj.GetHashCode(), useRecycler); } return((T)obj); }
public static void CreateView(string resPath, string resDefaultPath, EntityObject entity, Transform parent = null) { ViewObject obj = null; string recycleType = resPath; bool useRecycler = true; obj = m_recycler.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(m_viewRoot, false); } obj.CreateInFactory(entity, recycleType); if (EnableLog && Debuger.EnableLog) { Debuger.Log(LOG_TAG, "CreateView() {0}:{1} -> {2}:{3}, UseRecycler:{4}", entity.GetType().Name, entity.GetHashCode(), obj.GetRecycleType(), obj.GetInstanceID(), useRecycler); } if (m_mapObject.ContainsKey(entity)) { Debuger.LogError(LOG_TAG, "CreateView() 不应该存在重复的映射!"); } m_mapObject [entity] = obj; //m_mapObject.Add(entity, obj); } }