//private void OnEffectLoadComplete(string effectPath, UnityObject unityObject, SystemObject userData) //{ // effectAssetHandle = null; // GameObject effectGO = (GameObject)unityObject; // string poolGroup = userData as string; // // 读取完的时候, 特效已经销毁了 // if (m_Status == EffectStatus.Recycled) // { // RecycleFX(); // return; // } // // 读取资源错误 // if (unityObject == null) // { // DebugLogger.LogError($"EffectController::OnEffectLoadComplete. 读取资源失败: {effectPath}"); // RecycleFX(); // return; // } // // 指定了池子组的名字, 但是找不到池子组 // if (!string.IsNullOrEmpty(poolGroup) && !PoolManager.GetInstance().HasSpawnPool(poolGroup)) // { // DebugLogger.LogError($"EffectController::OnEffectLoadComplete. 找不到SpawnPool. SpawnPoolName: {poolGroup}. effectPath: {effectPath}"); // RecycleFX(); // return; // } // // 没挂脚本, 就不自动挂了, 省的老是忽略这个错误 // VFXController vfx = effectGO.GetComponent<VFXController>(); // if (vfx == null) // { // DebugLogger.LogError($"EffectController::OnEffectLoadComplete. 特效没有正确地挂脚本: {effectPath}"); // RecycleFX(); // return; // } // if (string.IsNullOrEmpty(poolGroup)) // { // _SetEffectAndUpdateEffectStatus(vfx); // } // else // { // SpawnPool spawnPool = PoolManager.GetInstance().GetSpawnPool(poolGroup); // GameObjectPool objPool = spawnPool.GetGameObjectPool(effectPath); // if (objPool == null) // { // GameObject template = Instantiate(effectGO); // objPool = spawnPool.CreateGameObjectPool(effectPath, template); // } // _SetEffectAndUpdateEffectStatus(objPool.GetComponentItem<VFXController>()); // } //} void OnEffectLoadComplete(string pathOrAddress, UnityObject returnObject, SystemObject userData) { LoadData d = userData as LoadData; if (!m_AssetName.Equals(d.assetName)) { // 可能有这种情况: // A特效 请求加载. 没加载完的时候A特效就回收了. B 特效使用了同一个EffectController, 也请求加载. 这时候A刚加载完 return; } if (!m_EffectID.Equals(d.effectID)) { return; } if (returnObject == null) { return; } m_AssetLoadHandler = null; GameObject effectGO = (GameObject)returnObject; // 读取完的时候, 特效已经销毁了 if (m_Status == EffectStatus.Recycled) { RecycleFX(); return; } // 读取资源错误 if (effectGO == null) { DebugUtility.LogError(LOG_TAG, $"EffectController::OnEffectLoadComplete. 读取资源失败: {m_AssetName}"); RecycleFX(); return; } // 没挂脚本, 就不自动挂了, 省的老是忽略这个错误 VFXController vfx = effectGO.GetComponent <VFXController>(); if (vfx == null) { DebugUtility.LogError(LOG_TAG, $"EffectController::OnEffectLoadComplete. 特效没有正确地挂脚本: {m_AssetName}"); RecycleFX(); return; } if (!effectGO.IsPooled()) { effectGO.CreatePool(1, pathOrAddress); } VFXController vfxInstance = vfx.Spawn(); vfxInstance.DoSpawned(); _SetEffectAndUpdateEffectStatus(vfxInstance); }