/// <summary> /// 异步从AssetBundle加载资源,加载完成后可以调用UnloadAssetBundle提前卸载AssetBundle /// </summary> /// <returns>可以使用协程等待结果或者检查IsDone</returns> public static AMLoadAssetOperation LoadAssetAsync(string assetBundleName, string assetName, System.Type type) { AMLoadAssetOperation operation = null; #if UNITY_EDITOR if (SimulateAssetBundleInEditor) { string[] assetPaths = UnityEditor.AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(assetBundleName, assetName); if (assetPaths.Length == 0) { Debug.LogError("There is no asset with name \"" + assetName + "\" in " + assetBundleName); return(null); } // @TODO: Now we only get the main object from the first asset. Should consider type also. Object target = UnityEditor.AssetDatabase.LoadAssetAtPath(assetPaths[0], type); operation = new AssetBundleLoadAssetOperationSimulation(target); } else #endif { LoadAssetBundle(assetBundleName, false); operation = new AssetBundleLoadAssetOperationSecond(assetBundleName, assetName, type); m_inProgressOperations.Add(operation); } return(operation); }
public void Destroy() { if (asyncLoadOp != null) { asyncLoadOp.UnloadAssetBundle(); asyncLoadOp = null; } if (gameObject != null) { UnityEngine.Object.Destroy(gameObject); gameObject = null; } }
private void LoadAsset() { EffectObject instance = EffectManager.Find(EffectID); if (instance != null && instance.modelGo != null) { // 有实例从实例复制 InstantiateModel(instance.modelGo); } else { // 没有实例从资源加载 asyncLoadOp = AssetBundleManager.LoadAssetAsync(assetBundlePath, config.AssetName, typeof(GameObject)); } }
public void Destroy() { ResetState(); if (asyncLoadOp != null) { asyncLoadOp.UnloadAssetBundle(); asyncLoadOp = null; } if (gameObject != null) { Object.Destroy(gameObject); gameObject = null; } }
private void LoadAsset() { AudioObject instance = AudioManager.Find(AudioID); if (instance != null && instance.audioClip != null) { // 有实例从实例复制 audioClip = instance.audioClip; audioSource.clip = audioClip; } else { // 没有实例从资源加载 asyncLoadOp = AssetBundleManager.LoadAssetAsync(assetBundlePath, config.AssetName, typeof(AudioClip)); } }
private void CheckLoading() { if (asyncLoadOp != null) { if (asyncLoadOp.IsDone()) { GameObject prefab = asyncLoadOp.GetAsset <GameObject>(); if (prefab != null) { InstantiateModel(prefab); } else { StopImmediate(); } asyncLoadOp.UnloadAssetBundle(); asyncLoadOp = null; } } }
private void CheckLoading() { if (asyncLoadOp != null) { if (asyncLoadOp.IsDone()) { audioClip = asyncLoadOp.GetAsset <AudioClip>(); audioSource.clip = audioClip; AssetBundleManager.UnloadAssetBundle(assetBundlePath); asyncLoadOp = null; if (audioClip == null) { Stop(); } else { audioSource.Play(); } } } }