Beispiel #1
0
    void InitializePool(WWW www)
    {
        XmlDocument xmlDoc = new XmlDocument();

        xmlDoc.LoadXml(www.text);
        XmlNodeList nodeList = xmlDoc.SelectSingleNode("root").ChildNodes;

        foreach (XmlElement xmlelement in nodeList)
        {
            foreach (GameObject prefab in _prefabs)
            {
                if (prefab.name == xmlelement.Name)
                {
                    MyPool.InitializePool(/*内存池对象*/ _spawnPool, /*预制体文件*/ prefab,
                                          /*默认初始化Prefab数量*/ 4, /*实例化限制*/ false, /*无限取Prefab*/ true, /*限制池子里最大的Prefab数量*/ 4,
                                          /*自动清理池子*/ true, /*最终保留*/ 4, /*多久清理一次*/ 1, /*每次清理几个*/ 1);
                }
            }
        }
    }
Beispiel #2
0
    //创建实例
    Transform CreatInstance(int mark, string prefabName, Vector3 pos, Quaternion rot)
    {
        bool isContains = false;

        //检测内存池内是否含有指定预制体
        for (int i = 0; i < _spawnPool._perPrefabPoolOptions.Count; i++)
        {
            if (_spawnPool._perPrefabPoolOptions[i].prefab.name.Contains(prefabName))
            {
                isContains = true;
                break;
            }
        }

        if (!isContains)
        {
            MyPool.InitializePool(/*内存池对象*/ _spawnPool, /*文件夹名称*/ "Prefab", /*预制体名称*/ prefabName,
                                  /*默认初始化Prefab数量*/ 2, /*实例化限制*/ false, /*无限取Prefab*/ true, /*限制池子里最大的Prefab数量*/ 4,
                                  /*自动清理池子*/ true, /*最终保留*/ 3, /*多久清理一次*/ 1, /*每次清理几个*/ 1);
        }

        Transform temp = _spawnPool.Active(prefabName, pos, rot);

        if (mark == 0)
        {
            _now_List.Add(temp);
        }
        else if (mark == 1)
        {
            _middle_List.Add(temp);
        }
        else
        {
            _last_List.Add(temp);
        }

        return(temp);
    }