public IEnumerator InstantiateGameObjectAsync(string assetBundleName, string assetName) { AssetBundleAssetOperation request = (AssetBundleAssetOperation)LoadAssetAsync(assetBundleName, assetName, typeof(GameObject)); if (request == null) { yield break; } yield return(StartCoroutine(request)); }
/// <summary> /// 从给定资产包开始资产的加载操作。 /// </summary> public static BaseAssetBundleAssetOperation LoadAssetAsync(string _assetBundleName, string _assetName, System.Type _type) { BaseAssetBundleAssetOperation operation = null; if (Application.platform == RuntimePlatform.WindowsEditor && SimulateAssetBundleInEditor) { #if UNITY_EDITOR //获取标有assetBundleName且命名为assetName的所有资产的资产路径。 string[] _assetPaths = AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(_assetBundleName, _assetName); //现在我们只从第一个资产中获取主要对象。 还应该考虑类型。 UnityEngine.Object _obj = AssetDatabase.LoadMainAssetAtPath(_assetPaths[0]); operation = new AssetBundleAssetSimulationOperation(_obj); #endif } else { LoadAssetBundle(_assetBundleName); operation = new AssetBundleAssetOperation(_assetBundleName, _assetName, _type); mProgressOperations.Add(operation); } return(operation); }