private IEnumerator LoadFromAssetBundleAsync <T> (string assetBundleName, string assetName, Action <bool, T> action, string projectTag = null) where T : UnityEngine.Object { assetBundleName = assetBundleName.ToLower(); float startTime = Time.realtimeSinceStartup; AssetBundleLoadAssetOperation request = GetManager(projectTag).LoadAssetAsync(assetBundleName, assetName, typeof(T)); if (request == null) { yield break; } yield return(StartCoroutine(request)); T prefab = request.GetAsset <T> (); float elapsedTime = Time.realtimeSinceStartup - startTime; Debug.Log(assetName + (prefab == null ? " was not" : " was") + " loaded successfully in " + elapsedTime + " seconds"); if (action != null) { action(prefab == null ? false : true, prefab); } }
public AssetBundleLoadAssetOperation LoadAssetAsync(string assetBundleName, string assetName, System.Type type) { Debug.Log("Loading " + assetName + " from " + assetBundleName + " bundle"); // assetBundleName= ResetAssetBundleName(assetBundleName); AssetBundleLoadAssetOperation operation = null; #if UNITY_EDITOR if (SimulateAssetBundleInEditor) { string[] assetPaths = AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(assetBundleName, assetName); if (assetPaths.Length == 0) { Debug.LogError("There is no asset with name \"" + assetName + "\" in " + assetBundleName); return(null); } Object target = AssetDatabase.LoadMainAssetAtPath(assetPaths[0]); operation = new AssetBundleLoadAssetOperationSimulation(target); } else #endif { assetBundleName = RemapVariantName(assetBundleName); LoadAssetBundle(assetBundleName); if (assetName == null) { operation = new AssetBundleLoadOperationSelf(assetBundleName, this); } else { operation = new AssetBundleLoadAssetOperationFull(assetBundleName, assetName, type, this); } m_InProgressOperations.Add(operation); } return(operation); }