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); } } } }
//创建实例 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); }