Exemplo n.º 1
0
    /// <summary>
    /// 从池中获取物体   一个物体对应一个当前物体的池
    /// </summary>
    /// <param name="poolName">物体名/  即池名</param>
    /// <param name="loadType">加载方式</param>
    /// <param name="objectType">生成物体类型</param>
    /// <param name="parent">父物体</param>
    /// <returns></returns>
    public GameObject GetObject(string poolName, LoadAssetType loadType, Transform parent)
    {
        if (!poolDict.ContainsKey(poolName))
        {
            poolDict.Add(poolName, new ObjectPool(1000));
        }
        ObjectPool pool = poolDict[poolName];

        return(pool.GetObject(poolName, loadType, parent));
    }
Exemplo n.º 2
0
    /// <summary>
    /// 从池中获取物体   一个物体对应一个当前物体的池
    /// </summary>
    /// <param name="poolName">物体名/  即池名</param>
    /// <param name="InitPos">初始位置</param>
    /// <param name="loadType">加载方式</param>
    /// <param name="generateType">生成物体类型</param>
    /// <returns></returns>
    public GameObject GetObject(string poolName, Vector3 InitPos, LoadAssetType loadType = LoadAssetType.Normal)
    {
        if (!poolDict.ContainsKey(poolName))
        {
            poolDict.Add(poolName, new ObjectPool(1000));
        }
        ObjectPool pool = poolDict[poolName];
        GameObject obj  = pool.GetObject(poolName, loadType, null);

        obj.transform.position = InitPos;
        return(obj);
    }
Exemplo n.º 3
0
    public T LoadResources <T>(LoadAssetType assetType, string assetName) where T : Object
    {
        Object _obj = null;

        if (m_assets.ContainsKey(assetType))
        {
            if (m_assets[assetType].ContainsKey(assetName))
            {
                return((T)m_assets[assetType][assetName]);
            }
        }
        else
        {
            m_assets[assetType] = new Dictionary <string, Object>();
        }
        _obj = Resources.Load <T>(assetType.ToString() + "/" + assetName);
        m_assets[assetType].Add(assetName, _obj);

        return((T)_obj);
    }
Exemplo n.º 4
0
    /// <summary>
    /// 从池中获取物体
    /// </summary>
    /// <param name="ObjName">物体名称</param>
    /// <param name="loadType">加载方式</param>
    /// <param name="objectType">物体类型</param>
    /// <param name="parent">父物体</param>
    /// <returns></returns>
    public GameObject GetObject(string ObjName, LoadAssetType loadType, Transform parent)
    {
        GameObject obj = null;

        for (int i = 0; i < PrefabList.Count; i++)
        {
            if (!PrefabList[i])
            {
                PrefabList.RemoveAt(i);
                i--;
                continue;
            }
            if (!PrefabList[i].activeSelf)
            {
                obj = PrefabList[i];
                if (parent)
                {
                    obj.transform.parent = parent;
                }
                obj.SetActive(true);
                break;
            }
        }
        if (obj == null)
        {
            if (PrefabList.Count >= MaxPrefabCount)
            {
                Debug.Log(ObjName + "maxcount" + MaxPrefabCount + "PrefabList.Count" + PrefabList.Count);
                GameObject.Destroy(PrefabList[0]);
                PrefabList.RemoveAt(0);
            }
            if (loadType == LoadAssetType.Normal)
            {
                if (ResourcesMgr.Instance.Load <GameObject>(ObjName) != null)
                {
                    ObjPrefab = ResourcesMgr.Instance.Load <GameObject>(ObjName).res;
                }
            }
            else
            {
                ResourcesMgr.Instance.LoadAsync <GameObject>(ObjName, (res) =>
                {
                    if (res != null)
                    {
                        ObjPrefab = res.res;
                    }
                });
            }

            if (ObjPrefab == null)
            {
                Debug.LogError(ObjName + "--->物体未加载成功");
            }
            if (ObjPrefab != null)
            {
                obj      = GameObject.Instantiate(ObjPrefab, parent);
                obj.name = ObjName + "_" + ObjectIndex;
                PrefabList.Add(obj);

                ObjectIndex += 1;
            }
        }
        return(obj);
    }