void LoadAssets(string path) { if ((System.IO.File.Exists (path) == false) || (path.EndsWith (".unity3d") == false)) { return; } string assetBundleName = System.IO.Path.GetFileNameWithoutExtension (path); var loadedAssetBundles = Resources.FindObjectsOfTypeAll<AssetBundle> (); foreach (var loadedAssetBundle in loadedAssetBundles) { if (loadedAssetBundle.name == assetBundleName) { loadedAssetBundle.Unload (true); } } if (string.IsNullOrEmpty (path) == false) { if (System.IO.Directory.Exists (path)) { return; } byte[] bytes = System.IO.File.ReadAllBytes (path); if (_lastSelectedAssetBundle != null) { _lastSelectedAssetBundle.Unload (true); _lastSelectedAssetBundle = null; } _lastSelectedAssetBundle = AssetBundle.CreateFromMemoryImmediate (bytes); if (_lastSelectedAssetBundle != null) { _lastSelectedAssetBundle.name = assetBundleName; _assets = _lastSelectedAssetBundle.LoadAllAssets (); } OrderBySize (); } }
/// <summary> /// 刷新shader /// </summary> /// <param name="assetBundle"></param> public static void RefreshShader(AssetBundle assetBundle) { #if UNITY_5 UnityEngine.Material[] materials = assetBundle.LoadAllAssets<Material>(); #else UnityEngine.Object[] materials = assetBundle.LoadAll(typeof(Material)); //LoadAll<Material>(); #endif //foreach (UnityEngine.Object m in materials) for (int i = 0; i < materials.Length; i++) { Material mat = materials[i]; string shaderName = mat.shader.name; Shader newShader = Shader.Find(shaderName); if (newShader != null) { mat.shader = newShader; } else { Debug.LogWarning("unable to refresh shader: " + shaderName + " in material " + mat.name); } } }
/// <summary> /// /// </summary> /// <param name="ab"></param> /// <param name="luaFn"></param> public static void UnpackConfigAssetBundleFn(AssetBundle ab, LuaFunction luaFn) { callBackFn = luaFn; #if UNITY_5 UnityEngine.Object[] all = ab.LoadAllAssets(); #else UnityEngine.Object[] all = ab.LoadAll(); #endif foreach (UnityEngine.Object i in all) { if (i is TextAsset) { TextAsset a = (TextAsset)i; if (callBackFn != null) callBackFn.call(a.name, a.text); } } }