/// <summary> /// 向对象池中添加一种预设类型 /// </summary> /// <param name="assetBundleName"></param> /// <param name="assetName"></param> /// <param name="prefabInfo"></param> public void PushPrefab(string assetBundleName, string assetName, PoolPrefabInfo prefabInfo = default(PoolPrefabInfo)) { if (HasPrefab(assetName)) { #if UNITY_EDITOR Debug.Log(string.Format("{0} 已经存在", assetName)); #endif return; } if (prefabInfo.Prefab == null) { prefabInfo.Prefab = GameModuleProxy.GetModule <ResourceManager>().LoadAsset <GameObject>(assetBundleName, assetName); if (prefabInfo.Prefab == null) { #if UNITY_EDITOR Debug.LogError("预设资源为null: " + assetName); #endif return; } _prefabs[assetName] = prefabInfo; _spawnPrefabs[assetName] = new List <GameObject>(); Initialization(assetName, prefabInfo); } }
private void Initialization(string assetName, PoolPrefabInfo prefabInfo) { var objects = new Queue <GameObject>(); for (var i = 0; i < prefabInfo.PreloadAmount; i++) { var obj = GameObject.Instantiate(prefabInfo.Prefab); obj.transform.SetParent(transform); obj.SetActive(false); objects.Enqueue(obj); } _despawneds[assetName] = objects; }
public void AddPrefab(string assetBundleName, string assetName, PoolPrefabInfo prefabInfo) { if (_prefabs.ContainsKey(assetName)) { Debug.Log("已经存在资源:" + assetName); return; } if (prefabInfo.Prefab == null) { //根据assetName,直接从ResourceManager里面加载 prefabInfo.Prefab = GameFrameworkMode.GetModule <ResourceManager>().LoadAsset <GameObject>(assetBundleName, assetName); if (prefabInfo.Prefab == null) { Debug.Log("预设资源为null:" + assetName); return; } } _prefabs[assetName] = prefabInfo; _spawneds[assetName] = new List <GameObject>(); Initialization(assetName, prefabInfo); }
/// <summary> /// 加载预设信息 /// </summary> /// <param name="assetName"></param> /// <param name="prefabInfo"></param> public void AddPrefab(string assetName, PoolPrefabInfo prefabInfo) { _gameObjectPoolHelper.AddPrefab(assetName, prefabInfo); }
/// <summary> /// 加载预设信息 /// </summary> /// <param name="assetbundlename"></param> /// <param name="assetname"></param> /// <param name="poolPrefabInfo"></param> public void LoadPrefabInfo(string assetbundlename, string assetname, PoolPrefabInfo poolPrefabInfo) { _gameObjectPoolHelper.PushPrefab(assetbundlename, assetname, poolPrefabInfo); }