public void ReleaseObject(string path, GameObject prefab)
    {
        PooleableObject prefabPooleable = prefab.GetComponent <PooleableObject>();

        if (prefabPooleable == null)
        {
            prefab.AddComponent <PooleableObject>();
            prefabPooleable      = prefab.GetComponent <PooleableObject>();
            prefabPooleable.path = path;
        }
        prefab.gameObject.SetActive(false);

        if (!objectsPool.ContainsKey(path))
        {
            objectsPool.Add(path, new List <GameObject>());
        }
        prefab.transform.SetParent(this.transform);
        objectsPool[path].Add(prefab);
    }
 private void InstantiateObject(string path)
 {
     if (ResourcesManager.Instance.GetGameObject(path) != null)
     {
         GameObject instance = Instantiate(ResourcesManager.Instance.GetGameObject(path), transform);
         if (instance != null)
         {
             PooleableObject poolable = instance.GetComponent <PooleableObject>();
             if (poolable == null)
             {
                 poolable = instance.AddComponent <PooleableObject>();
             }
             poolable.path = path;
             instance.gameObject.SetActive(false);
             instance.transform.position = this.transform.position;
             objectsPool[path].Add(instance);
         }
     }
     else
     {
         Debug.LogWarning("object in path " + path + " doesnt exist");
     }
 }