Пример #1
0
    static public Enemy CreateEnemy(Enemy prefab, string name = "Enemy")
    {
        Enemy pEnemy = m_Recycler.Pop(name) as Enemy;

        if (pEnemy == null)
        {
            pEnemy      = InstanceEnemy(prefab);
            pEnemy.name = name;
        }
        if (!pEnemy.gameObject.activeSelf)
        {
            pEnemy.gameObject.SetActive(true);
        }

        return(pEnemy);
    }
Пример #2
0
        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);
            }
        }