コード例 #1
0
    public PoolableList(Poolable poolable, Transform transform)
    {
        poolables = new LinkedList <Poolable>();
        prefab    = poolable.prefab;
        deactivatedObjectsParent = transform;

        poolableData              = new PoolableData();
        poolableData.objectName   = poolable.objectName;
        poolableData.defaultCount = 1;
        poolableData.maxCount     = 10;

        CreateParent();
        InsertPoolable(poolable);
    }
コード例 #2
0
    public PoolableList(PoolableData data, Poolable poolable, Transform transform)
    {
        poolables                = new LinkedList <Poolable>();
        poolableData             = data;
        prefab                   = poolable.prefab;
        deactivatedObjectsParent = transform;

        CreateParent();

        for (int index = 0; index < poolableData.defaultCount; index++)
        {
            var gObject = GameObject.Instantiate(poolable.prefab);
            var poolableAtGameObject = gObject.GetComponent <Poolable>();
            InsertPoolable(poolableAtGameObject);
        }
    }
コード例 #3
0
    public static void AddToPool(PoolableData data, Poolable poolable)
    {
        poolable.gameObject.SetActive(false);

        if (poolsDictionary.ContainsKey(data.objectName))
        {
            var poolableList = poolsDictionary[data.objectName];
            if (!poolableList.InsertPoolable(poolable))
            {
                GameObject.Destroy(poolable.gameObject);
            }
        }
        else
        {
            var poolableList = new PoolableList(data, poolable, deactivatedObjectsParent.transform);
            poolsDictionary[data.objectName] = poolableList;
        }
    }
コード例 #4
0
 public static void InitPool <T>(T objectPrefab) where T : MonoBehaviour, IPoolable
 {
     _poolables[typeof(T)]        = new PoolableData(objectPrefab.gameObject);
     _poolables[typeof(T)].Parent = new GameObject(typeof(T).ToString()).transform;
     _poolables[typeof(T)].Parent.SetParent(_transform);
 }