public static SimplePool GetPool(string prefabPath, int preload = 0, bool persistent = false)
        {
            if (!AllPools.ContainsKey(prefabPath))
            {
                var prefab = BaseUtils.LoadPrefab(prefabPath);
                if (prefab == null)
                {
                    Debug.LogError("SimplePool::GetPool cannot load prefab " + prefabPath);
                    return(null);
                }
                var go = new GameObject(prefabPath + " Pool");
                go.SetActive(false);
                var pool = go.AddComponent <SimplePool> ();
                pool.prefab     = prefab;
                pool.preload    = preload;
                pool.prefabPath = prefabPath;
                go.SetActive(true);

                if (persistent)
                {
                    pool.gameObject.AddComponent <DontDestroy> ();
                }

                AllPools [prefabPath] = pool;
                return(pool);
            }

            return(AllPools [prefabPath]);
        }
 public static GameObject Instantiate(string path, Vector3 position = default(Vector3), Quaternion rotation = default(Quaternion))
 {
     return(UnityEngine.Object.Instantiate(BaseUtils.LoadPrefab(path), position, rotation) as GameObject);
 }