Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        public static T InstanceEntity <T>() where T : EntityObject, new ()
        {
            EntityObject obj         = null;
            bool         useRecycler = true;

            Type type = typeof(T);

            obj = mRecycler.Pop(type.FullName) as EntityObject;
            if (obj == null)
            {
                useRecycler = false;
                obj         = new T();
            }
            obj.InstanceInFactory();

            if (EnableLog && LDebugger.EnableLog)
            {
                LDebugger.Log(LOG_TAG, "InstanceEntity() {0}:{1}, useRecycler:{2}", obj.GetType().Name, obj.GetHashCode(), useRecycler);
            }
            return((T)obj);
        }